浅谈Struts2的属性驱动和模型驱动
2016-07-05 10:32
344 查看
一直在用Struts2实现MVC,因为相比于Struts1中大量使用request.getparameter在页面上获取值,struts2则提供了属性驱动和模型驱动处理了这一问题。通过这两个驱动,我们在action中定义getter方法,表单元素中的name值只需和action中的变量名一直即可。
在jsp中代码:
创建action,实现modeldriven接口
在struts.xml文件中配置拦截器
一、属性驱动(property-driven) 对于属性驱动,我们在action中定义与表单元素对应的所有属性并提供getter和setter方法。示例如下:
在action代码:
public class StudentAction extends ActionSupport { private String sname; //姓名 private int age; //年龄 private float score; //分数 public String getSname() { return sname; } public void setSname(String pname) { this.sname = sname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } @Override public String execute() throws Exception { return SUCCESS; } }
在jsp中代码:
<form action="/struts2/load.action" method="post"> <table align="center"> <tr> <td>姓名:</td> <td><input type="text" name="sname" id="sname"/></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age" id="age"/></td> </tr> <tr> <td>分数</td> <td><input type="text" name="score" id="score"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="submit"/></td> </tr> </table> </form>
二、模型驱动(morden-driven)对于模型驱动,首先需要一个封装所有属性的javabean,其次所属的action需要实现modeldriven接口,并需要getModel()方法,最后还需要在Struts.xml文件中配置该action的modeldriven拦截器,jsp页面不用改变
创建Javabean,以student为例<span style="font-family: Arial, Helvetica, sans-serif;"> private String sname; //姓名</span>
private int age; //年龄 private float score; //分数 public String getSname() { return sname; } public void setSname(String pname) { this.sname = sname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } }
创建action,实现modeldriven接口
public class StudentAction extends ActionSupport implements ModelDriven<Student>{ private Student student=new Student(); public Student getStudent() { return student; } @Override public Student getModel() { return student; } @Override public String execute() throws Exception { return SUCCESS; } }
</pre><pre>
在struts.xml文件中配置拦截器
<action name="load"class="org.test.action.LoadAction"> <result name="success">/load.jsp</result> <interceptor-ref name="model-driven"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action>
总结:Struts2的这两种驱动模式为我们对视图层和模型层的数据交互提供了一大便利,若有兴趣的话,不妨研究下源码实现机制,大家可以一起交流下!
相关文章推荐
- struts2 jquery 打造无限层次的树
- 使用struts2+Ajax+jquery验证用户名是否已被注册
- struts2入门Demo示例
- 通过Ajax两种方式讲解Struts2接收数组表单的方法
- SSH框架网上商城项目第7战之整合Struts2和Json
- Struts2+Hibernate实现数据分页的方法
- ajax交互Struts2的action(客户端/服务器端)
- struts2 spring整合fieldError问题
- Struts2的s:radio标签使用及用jquery添加change事件
- 使用MyEclipse 开发struts2框架实现登录功能(结构教程)
- struts2 中文乱码的解决办法分享
- Struts2访问servlet分享
- struts2单个文件上传的两种实现方式
- struts2+jsp实现文件上传的方法
- struts2+jquery实现ajax登陆实例详解
- struts2中一个表单中提交多个请求的例子(多个提交按钮)
- Java struts2 validate用户登录校验功能实现
- SSH框架网上商城项目第13战之Struts2文件上传功能
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- Struts2学习笔记(5)-参数传递方法