struts2的请求参数封装
来源:互联网 发布:文章类网站源码 编辑:程序博客网 时间:2024/05/17 02:00
一 静态参数封装
静态参数封装,对于每次其提交的参数都是一样的情况,可以使用静态参数来实现
静态参数封装只在其所需的其action中配置
例:
<action name="hello" class="com.yu.web.action.HelloAction" method="saveUser"> <param name="name">struts</param> <param name="age">2</param></action>
其所配置的参数名称必须和其pojo类的属性相对应,应为参数传递是通过注入的方式提交的
public class HelloAction extends ActionSupport {private String name;private int age; public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String execute(){return SUCCESS;}public String saveUser(){System.out.println("name:"+name+"age:"+age);return null;}}
静态参数分装是通过staticParams的拦截器来实现的
如果我们不配置其staticParams拦截器,那么就不能得到其参数
<action name="hello" class="com.yu.web.action.HelloAction" method="saveUser"> <interceptor-ref name="exception"/> <interceptor-ref name="alias"/> <interceptor-ref name="servletConfig"/> <interceptor-ref name="i18n"/> <interceptor-ref name="prepare"/> <interceptor-ref name="chain"/> <interceptor-ref name="scopedModelDriven"/> <interceptor-ref name="modelDriven"/> <interceptor-ref name="fileUpload"/> <interceptor-ref name="checkbox"/> <interceptor-ref name="multiselect"/> <!-- <interceptor-ref name="staticParams"/> --> <interceptor-ref name="actionMappingParams"/> <interceptor-ref name="params"> <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param> </interceptor-ref> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods">input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="debugging"/> <param name="name">struts</param> <param name="age">2</param> <!-- <result name="success" type="chain"> <param name="namespace">/struts2</param> <param name="actionName">error</param> </result> --> </action>
从上面的结果可以看出,当我们注销掉staticParams拦截器后,其参数无法分装
注意:当我们没有配置拦截器时,其默认调用defaultStack的拦截器,如果我们写了一个拦截器,那么默认的拦截器就不起作用了
二 动态参数封装
2.1动作类是实体
注意:表单中的字段名必须和其实体的属性一致
这种方式由params拦截器来实现
2.2动作类与实体模型分开
写好实体类后,再其动作类中设置一个实体类的属性‘
public class HelloAction extends ActionSupport {private User user;public User getUser() {System.out.println("getUser()");return user;}public void setUser(User user) {System.out.println("setUser()");this.user = user;}public String execute(){return SUCCESS;}public String saveUser(){System.out.println("name:"+user.getName()+"age:"+user.getAge());return null;}}
编写表单
<form action="${pageContext.request.contextPath}//struts/hello.action"> <input type="text" name="user.name"></input> <input type="text" name="user.age"></input> <input type="submit"></input> </form>
注意其表单中name名称的编写
打印结果
从上面的结果看出,其getUser打印了两次,都有什么含义了
getUser() :判断对象是否为空,即是否存在实体类的对象
setUser() :如果为空,通过反射则创建一个实体类
getUser() :调用实体类对象
name:大大age:12 :结果显示
如果我们创建一个实体类对象,那么就不会执行setUser()
2.3模型驱动来实现
模型驱动实现的方式是通过实现ModelDriver<T>接口来实现的
public class HelloAction extends ActionSupport implements ModelDriven<User>{private User user=new User();public String execute(){return SUCCESS;} //此方法在动作方法前执行 @Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}public String saveUser(){System.out.println("name:"+user.getName()+"age:"+user.getAge());return null;}}
注意:模型驱动类必须实例化实体类
表单中字段名只需和实体类的属性一致就可以
<form action="${pageContext.request.contextPath}//struts/hello.action"> <input type="text" name="name"></input> <input type="text" name="age"></input> <input type="submit"></input> </form>其实现由一个modelDriver的拦截器实现
0 0
- struts2的请求参数封装
- Struts2 封装请求参数
- Struts2如何封装请求参数
- Struts2如何封装请求参数
- Struts2如何封装请求参数
- Struts2笔记之自定义封装请求参数的数据类型转换器
- Struts2的参数封装
- 【struts2】——封装请求参数
- Struts2 请求参数的接收
- struts2请求参数的接收
- 【Struts2】请求参数的接受
- Struts2学习之2(请求参数的封装,类型转换,输入验证,自定义拦截器)
- struts2笔记之共享数据的3种方式和请求参数封装
- Java URLConnection请求的参数进行封装
- 把请求的参数封装为xml
- Struts2架构中参数的封装
- 项目请求参数封装
- Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装(类比Struts2模型驱动)
- 素数环问题
- web前端之css中display属性,display:inline-block
- 基于Tomcat7、Java、WebSocket的服务器推送聊天室
- 让Cookie可以存中文
- Python相关的一些感性认识
- struts2的请求参数封装
- javascript之第五章
- 网络爬虫讲解(附java实现的实例)
- 数字图像处理之低通滤波器实现原理及方法(Matlab)
- VBox 增加磁盘容量
- 求图像的周长
- 解决Hibernate4连接MySQL5.5数据库无法自动创建表的问题
- ZooKeeper典型应用场景一览
- Mybatis 通用Crud-设计思路