Struts2通过拦截器机制封装了三种接收页面参数的方式:
1.属性驱动
2.模型驱动(有两种)
Domain
ModelDriven
1.属性驱动:这种方式比较简单,只要你直接在页面定义变量并且符合以下两个规则,就会自动接收值。
规则1:你变量的名字和页面的name属性一致
规则2:生成对应的get set方式
Action写法:
public class ParamAction { private String username; private String password; public String para1(){ System.out.println("用户名:"+username+"密码"+password); return "success"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
页面写法:
2.Domain:在Action中创建实体类的对象,并且符合以下两个规则就可以
规则1:页面的那么属性写法:对象名.属性名
规则2:生成get set方法
Action写法:
public class ParamAction2 extends ActionSupport { private User user; public String para2(){ System.out.println("用户名:"+user.getUsername()+"密码"+user.getPassword()); return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
实体类:get set省略了,自己生成
private String username; private String password;
页面写法:
3.实现ModelDriven接口,这个一个泛型接口,泛型中的内容就是你要接受的实体类
规则1:实现ModelDriven这个接口,并实现其getModel方法
规则2:提供一个空的对象供其初始化
规则3:页面的名字和实体类的属性名一致
Action写法:
/** * 1.类要实现ModelDriven这个接口 * @author Administrator * */ public class ParamAction3 implements ModelDriven<User> { //2.提供一个空的对象供其初始化,一定要new出来 private User user =new User(); public String para3(){ System.out.println(user.getUsername()+user.getPassword()); return "success"; } //3.把user返回 public User getModel() { return user; } }
页面写法: