- package org.abu.csdn.action.user;
- import com.opensymphony.xwork2.ActionSupport;
- /**
- * Struts2属性驱动演示用的Action
- * @author Yan
- *
- */
- public class RegisterAction extends ActionSupport {
- private String uname;
- private String upass;
- private String rpass;
- public String getUname() {
- return uname;
- }
- public void setUname(String uname) {
- this.uname = uname;
- }
- public String getUpass() {
- return upass;
- }
- public void setUpass(String upass) {
- this.upass = upass;
- }
- public String getRpass() {
- return rpass;
- }
- public void setRpass(String rpass) {
- this.rpass = rpass;
- }
- @Override
- public String execute() throws Exception {
- return ActionSupport.SUCCESS;
- }
- }
复制代码 1.Struts2的属性驱动.
Struts2的属性驱动指的是在action中JSP页面的每一个form中的name都对应在action中有一个属性与之对应。看下面代码片段:- <form action="register.do" name="RegisterForm" method="post">
- Username:<input type="text" name="uname"><br>
- Password:<input type="password" name="upass"><br>
- Confirm: <input type="password" name="rpass"><br>
- <input type="submit" value="Submit">
- </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对象,用来封装表单属性,看代码:- <form action="register.do" name="RegisterForm" method="post">
- Username:<input type="text" name="uname"><br>
- Password:<input type="password" name="upass"><br>
- Confirm: <input type="password" name="rpass"><br>
- <input type="submit" value="Submit">
- </form>
复制代码 (1)请你统一整个系统中的Action使用的驱动模型,即要么都是用属性驱动,要么都是用模型驱动。
(2)如果你的DB中的持久层的对象与表单中的属性都是一一对应的话,那么就使用模型驱动吧,毕竟看起来代码要整洁得多。
(3)如果表单的属性不是一一对应的话,那么就应该使用属性驱动,否则,你的系统就必须提供两个Bean,一个对应表单提交的数据,另一个用与持久层。 |