在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反射技术对HttpServlet进行简单封装,类似于struts框架,页面请求过来的参数名只需要与Action<T> T这个Bean里的变量对应即可,getForm()就是获得页面传过来的参数[注:当前这个只能传T里的string和int/...
c. 页面调用Action请求,Action中注入WebService实例bean; Action对应方法直接调用第三方WebService的相关方法; d. 测试; 备注: 1. 步骤b,接口文件必须同包名同类名置于src目录下; 开发一个Action调用关联...
接收客户端请求的Action: 添加短信Action----------->AddInfoAction.java 获取短信Action----------->GetInfoAction.java 同步联系人Action--------->AddContactAction.java 上传文件Action----------->...
1.用户请求:action=Szdw.jsp?mode=add 填写相关的表单,例如xm(姓名),xb(性别)……(表单的name和数据库中字段保持一致) 2.servlet获得请求类型转化为event=ADD=3; 3.执行execute方法,解析到ADD要完成以下动作...
接收客户端请求的Action: 添加短信Action----------->AddInfoAction.java 获取短信Action----------->GetInfoAction.java 同步联系人Action--------->AddContactAction.java 上传文件Action----------->...
在Struts中,用户的请求一般以*.do作为请求服务名,所有的请求均被指向ActionServlet,ActionServlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的ActionForm,并将此ActionForm传至指定的...
答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装类。 String和StringBuffer的区别? 答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...
二、我们可以使用Java自带的WsImport来实现本地代理。这种方法会将WebService翻译成Java类,我们使用类一样去访问WebService就行了。非常好用。 三、除了调用别人发布的webService,也可以自己发布WebService...
ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。 3.要说明的是, ...
用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本...
针对上述这种情况,如果将所有同种类型的请求参数封装到一个数组中,后台就可以进行绑定接收了。 13.3.1 绑定数组 创建一个用户信息列表页面; 在处理器类中编写批量删除用户的方法; 启动项目,访问...
Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double ...
该系统是基于Struts2+Hibernate开发的一个论坛系统,其中,Hibernate主要负责数据底层封装处理,Struts2在Action中调用DAO相应的方法实现业务处理。系统采用B/S模式,用java语言结合mysql数据库技术进行开发。系统...
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 ...
web层(action):包含JSP和Servlet等与web相关的内容,负责与浏览器的响应和请求; 业务层(service):只关心业务逻辑; 数据层(dao):封装了对数据库的访问细节,数据操作类; 关系:web层依赖业务层 ...
使用拦截器机制来限制未登录用户对购买、结算等Action的访问,保证了系统的健壮性。 对分页进行了组建化封装,提高了系统的通用性。 层与层之间采用接口连接,面向接口编程使得系统结构良好。 经验总结: 通过该...
{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....
用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,...
对于基于Struts框架的Web应用程序,当客户端浏览器发出请求时,请求会被控制器 截获,并调用在Web应用启动时就加载并初始化核心控制器组件ActionServlet,然后通 过ActionServlet从Struts- config.xml文件中读取...