`
hui_jing_880210
  • 浏览: 43610 次
  • 性别: 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();
         }
    }

}
分享到:
评论

相关推荐

    在JAVA中封装JSON数据

    在Struts框架中,我们可以使用Action类来处理请求和响应,通过ActionSupport类提供的结果类型来发送JSON响应。以下是一个简单的示例: ```java public class UserAction extends ActionSupport { private User ...

    java各种常用的工具类封装 源码

    例如,`Struts2Util` 可以帮助开发者更便捷地构建Action,处理请求和响应,以及进行视图渲染。 8. **StringUtil**: `StringUtil` 专注于字符串操作,如检查空字符串、格式化字符串、分割字符串、替换子串、去除空白...

    Elasticsearch的JAVA操作工具类,包括增删改查的封装

    本文将详细介绍如何构建一个封装了基本增删改查功能的Elasticsearch Java工具类。 首先,我们需要引入Elasticsearch的Java客户端依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    ajax js和java封装好的工具

    在这个工具中,Java代码可能是预定义的Action类,用于处理AJAX请求,并使用JSON格式返回数据。 **Struts2**是一个基于MVC设计模式的Java web框架,它提供了强大的控制器层,简化了请求处理和视图渲染。Struts2的...

    (HttpServlet封装类)Action.java

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

    自己封装的小框架--JDBC封装 Action层封装 手动事务管理

    本项目中,"自己封装的小框架--JDBC封装 Action层封装 手动事务管理"是一个实用的实践案例,旨在提高开发效率,优化代码结构,并确保数据操作的完整性。下面我们将深入探讨这个框架中的主要组成部分及其相关知识点。...

    android请求webservice需要的soap工具封装

    本篇文章将深入探讨如何在Android中利用ksoap2-android-assemble库进行SOAP请求的封装,以便更高效地进行网络通信。 首先,我们需要了解ksoap2-android-assemble库。这是一个轻量级的Java库,专门为Android平台设计...

    对分页进行了封装,PageUtil.java工具类

    `GroupAction.java`可能是Spring MVC中的Controller,负责接收HTTP请求,调用`PageUtil`处理分页查询,并将结果返回给前端。 `Page.java`看起来是一个自定义的Page对象,包含了分页数据的基本信息,如总记录数、...

    基于Java SSMVC框架封装测试版

    它提供了一个处理HTTP请求的Action类,通过配置文件定义请求与Action之间的映射关系,实现业务逻辑和视图的分离。 2. **Spring**:Spring是一个全面的企业级应用开发框架,提供了IOC(Inversion of Control,控制...

    Struts2五种数据封装Demo

    Struts2是一个强大的Java web框架,它简化了MVC(模型-视图-控制器)架构的实现,使得开发者可以更高效地处理用户请求和业务逻辑。在这个“Struts2五种数据封装Demo”中,我们将深入探讨Struts2的数据封装机制,以及...

    浅谈Strut2如何对请求参数的封装

    总结起来,Struts2对请求参数的封装是通过Action类的属性映射、ValueStack的使用以及拦截器链的处理来实现的。这种设计提高了代码的可读性和可维护性,使得开发者能更专注于业务逻辑,而不是繁琐的参数获取。了解这...

    java调用soap接口案例

    3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service Description Language)文档,从中可以获取服务的地址、端点以及方法的SOAP Action。然后,我们可以使用`SOAPMessage`对象来创建请求的XML结构...

    java学习(ssh) action structs spring hibernet

    在Struts中,ActionForm类用于封装用户请求的数据,而Action类则负责处理这些数据并调用相应的业务逻辑。此外,Struts还提供了丰富的标签库,简化了页面的开发工作。 #### Spring框架 Spring是一个轻量级的控制反转...

    StrutsInAction.rar_Struts in Action_StrutsinAction_action _java

    3. **Form Bean**:用于封装请求参数和展示数据,通常与JSP表单进行交互。 4. **JSP视图**:用于展示结果,通常包含JSP标签库,如Struts Taglib,它们简化了页面的渲染。 5. **业务逻辑层**:包括Service或DAO...

    action的使用之封装文本文件的加载

    本篇文章将深入探讨“action的使用之封装文本文件的加载”这一主题,通过理解相关知识点,我们可以更高效地处理文本文件。 首先,"action"在这里通常指的是某种操作或者函数,它封装了读取和处理文本文件的过程。...

    java 页面上有ENCTYPE="multipart/form-data" 时action方法或者控制层用request.getParameter()获取不到值的方法 ?

    这是因为`multipart/form-data`允许在请求中携带二进制数据,如图片、文档等文件。然而,这种编码方式下,常规的`request.getParameter()`方法无法正确地获取到表单中的文本字段值,因为这些值被封装在了请求的多...

    java笔试题最新最好,最全面

    ActionServlet根据请求路径找到对应的Action,并创建ActionForm对象来封装请求参数。接着,ActionServlet会调用Action的`execute()`方法处理请求,并根据返回的ActionForward对象来决定后续的页面跳转。 #### 五、...

    java开发的各种jar包

    Java开发中的JAR(Java Archive)包是Java编程语言中的一种归档格式,用于封装类库、资源文件和元数据,便于代码复用和分发。在Java开发中,JAR包扮演着至关重要的角色,提供了模块化和库管理的能力。下面我们将详细...

    带二级缓存和业务封装的SSH项目源码

    **Struts2** 是MVC(Model-View-Controller)架构模式的一种实现,负责处理HTTP请求并将其映射到相应的Action,进而调用业务逻辑。Struts2提供了丰富的拦截器和结果类型,便于进行权限控制、日志记录、异常处理等...

    重新封装struts中action类

    在封装后的`GenericAction.java`中,我们可以看到设计者可能将`ActionMapping`的处理逻辑内聚到了父类中,使得子类只需要关注业务逻辑部分,返回一个表示跳转路径或结果代码的`String`。这样做的好处有以下几点: 1...

Global site tag (gtag.js) - Google Analytics