struts1中,我们可以将提交表单的参数用FormBean进行封装,传递给我们的Action,在struts2中我们可以使用Model-Driven和Property-Driven进行表单数据的封装,便于我们在Action中直接使用。
1、Property-Driven(属性驱动):是指在jsp页面中的form表单域值与Action中属性名一致,当form被提交到action时,struts2会自动根据表单中的属性调用action中的set方法进行赋值。
eg:
表单:
1
Action:
1 public class userAction extends ActionSupport{ 2 private String userName; 3 private String password; 4 5 public String execute()throws Exception{ 6 System.out.println(getUserName()); 7 return this.SUCCESS; 8 } 9 10 public String getUserName(){11 return userName;12 }13 14 public String getPassword(){15 return password;16 }17 18 public void setUserName(String userName){19 this.userName = userName;20 }21 22 public void setPassword(String password){23 this.password = password;24 }25 }
2、Model-Driven(模型驱动):struts2中的模型驱动类似struts1中的ActionForm,在struts1中,每个 Action都必须与一个ActionForm相对应,而在Struts2中,每一个action则是都对应一个实体bean,这个bean里面则是封装 了表单所有属性。
eg:
表单:
1
Action:
1 public class userAction extends ActionSupport implements ModelDriven{ 2 private User user = new User(); 3 4 public String execute()throws Exception{ 5 System.out.println(user.getUserName()); 6 return this.SUCCESS; 7 } 8 9 @override10 public User getModel(){11 return user;12 }13 14 public User getUser(){15 return user;16 }17 18 public void setUser(User user){19 this.user = user20 }21 }
bean:
public class user{ private int id; private String userName; private String password; //以下省略get和set方法}
3、属性驱动和模型驱动的选取:
属性驱动方便简洁,表单域较少时可用;表单域较多且定义了相应的bean,可以使用模型驱动
转自: