`
hui_jing_880210
  • 浏览: 41540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java Action 请求封装(二)

    博客分类:
  • java
阅读更多

        在Action初始化的时间引入ActionValues,并把ActionValues继承HashMap,ActionValues如果传递为对象会自动通过mysql拿到当前对象实体名称,然后根据实体的名称来当Key封装value值,如果没有参数默认是传递request,然后自动解析字符串存入map,并会过滤spring等一些配制文件的参数数据。

/**
 * ActionValues数据封装
 * @author zhouguohui
 */
public class ActionValues extends HashMap<String,Object>{
   
    public ActionValues(){
        super();
    }
   
    public ActionValues(Object obj){
        String[] fieldNames=ModelUtils.getFieldNames(obj.getClass());
        try{
            for(String fieldName:fieldNames){
                this.put(fieldName,BeanUtils.getProperty(obj, fieldName)==null?"":BeanUtils.getProperty(obj, fieldName));
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
   
    public ActionValues(Map<String,Object> values){
        this.putAll(values);
    }
   
    @SuppressWarnings("unchecked")
    public ActionValues(HttpServletRequest request){
        String name=null;
        Enumeration<String> paramNames=request.getParameterNames();
        Enumeration<String> attrNames=request.getAttributeNames();
       
        while(paramNames.hasMoreElements()){
            name=paramNames.nextElement();
            if(name.startsWith("org.springframework")||name.equals("characterEncodingFilter.FILTERED")||name.equals("shiroFilter.FILTERED")||name.equals("roles.FILTERED")){//过滤spring参数
                continue;
            }
            if(request.getParameterValues(name).length>1){
                String[] values=request.getParameterValues(name);
                for(String v:values){
                    if(StrUtils.isNotEmpty(v)){
                        put(name,v);   
                    }
                }
               
            }else{
                if(null!=request.getParameter(name)&&StrUtils.isNotEmpty(String.valueOf(request.getParameter(name)))){
                    put(name, request.getParameter(name));   
                }
                   
            }
        }
       
        while(attrNames.hasMoreElements()){
            name=attrNames.nextElement();
            if(name.startsWith("org.springframework")||name.equals("characterEncodingFilter.FILTERED")||name.equals("shiroFilter.FILTERED")||name.equals("roles.FILTERED")){//过滤spring参数
                continue;
            }
            if(null!=request.getAttribute(name)){
                put(name,request.getAttribute(name));
            }
           
        }
    }
   
    @Deprecated
    public void addValues(Object obj){
         String[] fieldNames=ModelUtils.getFieldNames(obj.getClass());
         try{
             for(String fieldName:fieldNames){
                 if(null!=BeanUtils.getProperty(obj, fieldName)&&!"".equals(BeanUtils.getProperty(obj, fieldName).trim())){
                     this.put(fieldName,BeanUtils.getProperty(obj, fieldName));
                 }
             }
         }catch(Exception e){
             e.printStackTrace();
         }
    }

}
分享到:
评论

相关推荐

    (HttpServlet封装类)Action.java

    通过JAVA反射技术对HttpServlet进行简单封装,类似于struts框架,页面请求过来的参数名只需要与Action&lt;T&gt; T这个Bean里的变量对应即可,getForm()就是获得页面传过来的参数[注:当前这个只能传T里的string和int/...

    java命名规范 开发规范

    c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联...

    毕业设计-基于java+HBase实现的手机数据备份系统(短信、联系人、重要文件).zip

    接收客户端请求的Action: 添加短信Action-----------&gt;AddInfoAction.java 获取短信Action-----------&gt;GetInfoAction.java 同步联系人Action---------&gt;AddContactAction.java 上传文件Action-----------&gt;...

    JAVA WEB框架,java网站一个模块只用写一个文件

    1.用户请求:action=Szdw.jsp?mode=add 填写相关的表单,例如xm(姓名),xb(性别)……(表单的name和数据库中字段保持一致) 2.servlet获得请求类型转化为event=ADD=3; 3.执行execute方法,解析到ADD要完成以下动作...

    基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人等(毕业设计)

    接收客户端请求的Action: 添加短信Action-----------&gt;AddInfoAction.java 获取短信Action-----------&gt;GetInfoAction.java 同步联系人Action---------&gt;AddContactAction.java 上传文件Action-----------&gt;...

    struts面试宝典.pdf

    在Struts中,用户的请求一般以*.do作为请求服务名,所有的请求均被指向ActionServlet,ActionServlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的ActionForm,并将此ActionForm传至指定的...

    java面试题

    答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。 String和StringBuffer的区别? 答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新...

    java 面试题 总结

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...

    Java EE常用框架.xmind

    二、我们可以使用Java自带的WsImport来实现本地代理。这种方法会将WebService翻译成Java类,我们使用类一样去访问WebService就行了。非常好用。 三、除了调用别人发布的webService,也可以自己发布WebService...

    谈谈你对Struts的理解。

    ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。  3.要说明的是, ...

    java 编写文件上传类简单易用

    用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本...

    基于java的企业级应用开发:复杂数据绑定.ppt

    针对上述这种情况,如果将所有同种类型的请求参数封装到一个数组中,后台就可以进行绑定接收了。 13.3.1 绑定数组 创建一个用户信息列表页面; 在处理器类中编写批量删除用户的方法; 启动项目,访问...

    超级有影响力霸气的Java面试题大全文档

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double ...

    bbs论坛系统(structs2+hibernate+jsp)

    该系统是基于Struts2+Hibernate开发的一个论坛系统,其中,Hibernate主要负责数据底层封装处理,Struts2在Action中调用DAO相应的方法实现业务处理。系统采用B/S模式,用java语言结合mysql数据库技术进行开发。系统...

    外文翻译 stus MVC

    This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology. Struts can help you control change in your Web project and promote ...

    book增删改查系统

     web层(action):包含JSP和Servlet等与web相关的内容,负责与浏览器的响应和请求;  业务层(service):只关心业务逻辑;  数据层(dao):封装了对数据库的访问细节,数据操作类; 关系:web层依赖业务层 ...

    达内Java培训项目(当当网/通用电子商务系统)

    使用拦截器机制来限制未登录用户对购买、结算等Action的访问,保证了系统的健壮性。 对分页进行了组建化封装,提高了系统的通用性。 层与层之间采用接口连接,面向接口编程使得系统结构良好。 经验总结: 通过该...

    Java学习笔记-个人整理的

    {2.5}封装}{52}{section.2.5} {2.6}多态}{53}{section.2.6} {2.7}Sample code}{54}{section.2.7} {2.8}框架中移动的小球}{59}{section.2.8} {2.9}抽象与接口}{59}{section.2.9} {2.10}访问控制}{60}{section....

    Struts原理、开发及项目实施

    用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,...

    健身房管理信息系统设计.doc

    对于基于Struts框架的Web应用程序,当客户端浏览器发出请求时,请求会被控制器 截获,并调用在Web应用启动时就加载并初始化核心控制器组件ActionServlet,然后通 过ActionServlet从Struts- config.xml文件中读取...

Global site tag (gtag.js) - Google Analytics