Struts2属性驱动与模型驱动
来源:互联网 发布:电竞椅 知乎 编辑:程序博客网 时间:2024/05/28 05:13
1属性驱动是指用Action的属性来封装来回请求的参数.
2.模型驱动 模型驱动是指使用JavaBean来封装来回请求的参数.(个人理解)
建议使用模型驱动,因为相比struts 1的Action类,struts 2的Action类承担了太多的责任:既用于封装来回请求的参数, 也保
护了控制逻辑,这使它的结构不够清晰.这就是模型驱动的优势.
3.到底是用属性驱动和是模型驱动呢? 这个问题困扰了很多Struts2的初学者,我这里提供一些
建议: (1)请你统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用
模型驱动。 (2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,那么就使用模
型驱动吧,毕竟看起来代码要整洁得多。 (3)如果表单的属性不是一一对应的话,那么就应该使
用属性驱动,否则,你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。
以下是博主写的例子:
属性驱动:
1、在action中声明属性,属性的名称和页面元素中name属性的值保持一致
2、action中的属性必须有set和get方法
package test;public class DriverAction2{ private User user; public String execute(){ return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; }}
jsp页面form表单
<form action="login.action" method="post"> 姓名 <input type="text" name="user.username"><br/> 密码 <input type="text" name="user.password"><br/> 年龄 <input type="text" name="user.age"><br/> <input type="submit" value="submit"> </form>
可以看到值栈
模型驱动:
1、action实现一个接口ModelDriver
2、在action中声明一个属性,该属性会封装页面中的数据,并且用new的方法
给该属性创建对象
填充接口中的方法getModel,返回该属性的值
package test;import com.opensymphony.xwork2.ModelDriven;public class ModelAction implements ModelDriven<User>{//直接实例化对象private User user=new User();public String execute(){return "success";}@Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}}
从上图可以看出,ModelDriverInterceptor有两个作用:
1、 当前请求的action必须实现ModelDriver接口
2、 把model对象放入到了栈顶
可以看到值栈显示object 为User封装类 property name 为user的属性
总结:
当表单中数据提交到对应的action中时,struts2容器会创建action,并且把action放入到栈顶,实
现ModelDriven的action类在对象栈中会有一个属性为model(username,password),之后
ModelDrivenInterceptor类会把action中的model属性放入栈顶(这样model属性直接可以访问了),
之后再由ParameterInterceptor类负责把页面上表单中的值赋值给对象栈中的属性,由该类中的
doInterceptor方法返回invocation.invoke()放行,回到action中,最后由jsp页面通过ognl表达
式显示对应的信息。
- Struts2的属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动
- Struts2属性驱动与模型驱动
- Struts2中属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动概念
- Struts2 - 属性驱动与模型驱动
- Struts2 属性驱动与模型驱动
- Struts2中属性驱动与模型驱动
- Struts2属性驱动与模型驱动
- Struts2-属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动
- Struts2 - 属性驱动与模型驱动
- Struts2属性驱动与模型驱动
- struts2属性驱动,模型驱动
- Struts2的属性驱动与模型驱动的区别
- Struts2的属性驱动与模型驱动的区别
- 管理 Java 类路径 (Windows)
- CodeIgniter如何去掉Index.php-apache服务器
- 前端ie不兼容现在的主流js写法问题
- Java垃圾收集学习笔记
- 编码格式
- Struts2属性驱动与模型驱动
- MySQL Daemon failed to start. 无法启动
- 浅谈EABI和OABI
- 深度学习 激活函数
- HDU
- [HNOI2008]水平可见直线
- UVa11542
- KMP算法
- SSD算法的MXNet实现