struts2 action接收请求参数和类型转换
Posted 大热
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2 action接收请求参数和类型转换相关的知识,希望对你有一定的参考价值。
1,action接收请求参数
- 在struts2中action是什么?(struts2是一个mvc框架)
V:jsp
M:action
C:action StrutsPrepareAndExecuteFilter
- 在struts2中获取请求参数:
a.属性驱动
1.直接将action做一个model,就可以得到请求参数.
问题1:action封装请求参数,会不会存在线程安全问题?
不会:因为每一次请求,都是一个新的action。
缺点:需要单独定义javaBean,将action中属性copy到javaBean中。
优点:简单。
这种方式 ,底层是通过反射来实现的。
2.在action中声明一个model。
private User user;提供get/set方法
在页面上使用ognl来描述
<input type="text" name="user.username">
优点:简单,解决了第一种封装的问题
缺点:在页面上使用了ognl表达式,页面不通用了。
问题:这种方式,数据是怎样封装的?
是通过struts2中的interceptor进行了数据封装.
1 <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
b.模型驱动(在开发中应用比较多)
步骤:
1.让action类实现ModelDriven
2.重写getModel方法
3.在action中实现化一个model对象,让getModel方法返回这个对象。
1 public class Login3Action extends ActionSupport implements ModelDriven<User> { 2 3 private User user = new User(); 4 5 public User getModel() { 6 return user; 7 } 8 }
优点:解决了属性驱动存在的问题
缺点:一次只能封装一个model对象.
struts2 有很多围绕模型驱动的特性
* <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> 为模型驱动提供了更多特性
以上是关于struts2 action接收请求参数和类型转换的主要内容,如果未能解决你的问题,请参考以下文章
Struts2框架怎样在Ajax请求中接收数组或List集合参数