A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柳小龙 中级黑马   /  2013-8-5 23:49  /  1567 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

到底是用属性驱动和是模型驱动,在哪种情况下用那种模式,有经验的大神,请帮小弟分析总结下??

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

2 个回复

倒序浏览
  1. package org.abu.csdn.action.user;

  2. import com.opensymphony.xwork2.ActionSupport;

  3. /**
  4. * Struts2属性驱动演示用的Action
  5. * @author Yan
  6. *
  7. */
  8. public class RegisterAction extends ActionSupport {
  9.     private String uname;
  10.     private String upass;
  11.     private String rpass;
  12.     public String getUname() {
  13.         return uname;
  14.     }
  15.     public void setUname(String uname) {
  16.         this.uname = uname;
  17.     }
  18.     public String getUpass() {
  19.         return upass;
  20.     }
  21.     public void setUpass(String upass) {
  22.         this.upass = upass;
  23.     }
  24.     public String getRpass() {
  25.         return rpass;
  26.     }
  27.     public void setRpass(String rpass) {
  28.         this.rpass = rpass;
  29.     }  
  30.     @Override
  31.     public String execute() throws Exception {        
  32.         return ActionSupport.SUCCESS;
  33.     }
  34. }
复制代码
1.Struts2的属性驱动.
Struts2的属性驱动指的是在action中JSP页面的每一个form中的name都对应在action中有一个属性与之对应。看下面代码片段:
  1. <form action="register.do" name="RegisterForm" method="post">
  2.             Username:<input type="text" name="uname"><br>
  3.             Password:<input type="password" name="upass"><br>
  4.             Confirm: <input type="password" name="rpass"><br>
  5.             <input type="submit" value="Submit">
  6. </form>
复制代码
这是一个最基本的用户注册的表单,它有三个数据要提交: uname、upass、rpass,那么对应的Action也要有三个属性(其实是三个属性的setter),看register.do实际的Action定义类:
你会看到RegisterAction中的三个属性和RegisterForm表单中的name属性名字一模一样,没错,这就是Struts2的属性驱动,当表单提交到RegisterAction后,Struts2将会自动将根据表单的name属性调用Action中相应的属性setter,去自动赋值。
2.Struts2的模型驱动
Struts2的模型驱动其实和Struts1.x中的ActionForm有点类似,在Struts1.x中每一个Action都必须有一个ActionForm与之对应,而Struts2.0中,每一个Action同样需要提供一个POJO对象,用来封装表单属性,看代码:
  1. <form action="register.do" name="RegisterForm" method="post">

  2.             Username:<input type="text" name="uname"><br>
  3.             Password:<input type="password" name="upass"><br>
  4.             Confirm: <input type="password" name="rpass"><br>
  5.             <input type="submit" value="Submit">

  6. </form>
复制代码
(1)请你统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。
(2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,那么就使用模型驱动吧,毕竟看起来代码要整洁得多。
(3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 很给力!

查看全部评分

回复 使用道具 举报
嗯嗯。谢谢啦!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马