在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(); } } }
相关推荐
在Struts框架中,我们可以使用Action类来处理请求和响应,通过ActionSupport类提供的结果类型来发送JSON响应。以下是一个简单的示例: ```java public class UserAction extends ActionSupport { private User ...
例如,`Struts2Util` 可以帮助开发者更便捷地构建Action,处理请求和响应,以及进行视图渲染。 8. **StringUtil**: `StringUtil` 专注于字符串操作,如检查空字符串、格式化字符串、分割字符串、替换子串、去除空白...
本文将详细介绍如何构建一个封装了基本增删改查功能的Elasticsearch Java工具类。 首先,我们需要引入Elasticsearch的Java客户端依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
在这个工具中,Java代码可能是预定义的Action类,用于处理AJAX请求,并使用JSON格式返回数据。 **Struts2**是一个基于MVC设计模式的Java web框架,它提供了强大的控制器层,简化了请求处理和视图渲染。Struts2的...
通过JAVA反射技术对HttpServlet进行简单封装,类似于struts框架,页面请求过来的参数名只需要与Action<T> T这个Bean里的变量对应即可,getForm()就是获得页面传过来的参数[注:当前这个只能传T里的string和int/...
本项目中,"自己封装的小框架--JDBC封装 Action层封装 手动事务管理"是一个实用的实践案例,旨在提高开发效率,优化代码结构,并确保数据操作的完整性。下面我们将深入探讨这个框架中的主要组成部分及其相关知识点。...
本篇文章将深入探讨如何在Android中利用ksoap2-android-assemble库进行SOAP请求的封装,以便更高效地进行网络通信。 首先,我们需要了解ksoap2-android-assemble库。这是一个轻量级的Java库,专门为Android平台设计...
`GroupAction.java`可能是Spring MVC中的Controller,负责接收HTTP请求,调用`PageUtil`处理分页查询,并将结果返回给前端。 `Page.java`看起来是一个自定义的Page对象,包含了分页数据的基本信息,如总记录数、...
它提供了一个处理HTTP请求的Action类,通过配置文件定义请求与Action之间的映射关系,实现业务逻辑和视图的分离。 2. **Spring**:Spring是一个全面的企业级应用开发框架,提供了IOC(Inversion of Control,控制...
Struts2是一个强大的Java web框架,它简化了MVC(模型-视图-控制器)架构的实现,使得开发者可以更高效地处理用户请求和业务逻辑。在这个“Struts2五种数据封装Demo”中,我们将深入探讨Struts2的数据封装机制,以及...
总结起来,Struts2对请求参数的封装是通过Action类的属性映射、ValueStack的使用以及拦截器链的处理来实现的。这种设计提高了代码的可读性和可维护性,使得开发者能更专注于业务逻辑,而不是繁琐的参数获取。了解这...
3. **构建SOAP请求**:首先,我们需要了解SOAP服务的WSDL(Web Service Description Language)文档,从中可以获取服务的地址、端点以及方法的SOAP Action。然后,我们可以使用`SOAPMessage`对象来创建请求的XML结构...
在Struts中,ActionForm类用于封装用户请求的数据,而Action类则负责处理这些数据并调用相应的业务逻辑。此外,Struts还提供了丰富的标签库,简化了页面的开发工作。 #### Spring框架 Spring是一个轻量级的控制反转...
3. **Form Bean**:用于封装请求参数和展示数据,通常与JSP表单进行交互。 4. **JSP视图**:用于展示结果,通常包含JSP标签库,如Struts Taglib,它们简化了页面的渲染。 5. **业务逻辑层**:包括Service或DAO...
本篇文章将深入探讨“action的使用之封装文本文件的加载”这一主题,通过理解相关知识点,我们可以更高效地处理文本文件。 首先,"action"在这里通常指的是某种操作或者函数,它封装了读取和处理文本文件的过程。...
这是因为`multipart/form-data`允许在请求中携带二进制数据,如图片、文档等文件。然而,这种编码方式下,常规的`request.getParameter()`方法无法正确地获取到表单中的文本字段值,因为这些值被封装在了请求的多...
ActionServlet根据请求路径找到对应的Action,并创建ActionForm对象来封装请求参数。接着,ActionServlet会调用Action的`execute()`方法处理请求,并根据返回的ActionForward对象来决定后续的页面跳转。 #### 五、...
Java开发中的JAR(Java Archive)包是Java编程语言中的一种归档格式,用于封装类库、资源文件和元数据,便于代码复用和分发。在Java开发中,JAR包扮演着至关重要的角色,提供了模块化和库管理的能力。下面我们将详细...
**Struts2** 是MVC(Model-View-Controller)架构模式的一种实现,负责处理HTTP请求并将其映射到相应的Action,进而调用业务逻辑。Struts2提供了丰富的拦截器和结果类型,便于进行权限控制、日志记录、异常处理等...
在封装后的`GenericAction.java`中,我们可以看到设计者可能将`ActionMapping`的处理逻辑内聚到了父类中,使得子类只需要关注业务逻辑部分,返回一个表示跳转路径或结果代码的`String`。这样做的好处有以下几点: 1...