Struts2 入门 三(Struts Action类的实现方式 接收参数方式 )
实现action类的方式 有三种 只讲你需要记的两种 剩下那一种你就当不存在就好。
第一种 实现 Action 接口
第二种 继承 ActionSupport
Action接收参数的三种方式 :
第一种: 属性 注入
用setter 、getter来实现
注意 domainModel是可以给List集合注入值的 Struts2和hibernate 整合时会经常用到这种方式.
第二种:domainModel(域模型) 附代码:
Model层
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("setName()当前值"+this.name);
this.name = name;
System.out.println("setName()注入后"+name);
}
public int getAge() {
return age;
}
public void setAge(int age) {
System.out.println("setAge()当前值"+this.age);
this.age = age;
System.out.println("setAge()注入后"+age);
}
}
Action层:
public class UserAction extends ActionSupport {
//一般是写成private User user;让Struts容器帮你创建对象
//但是写成下面的也没错
private User user=new User();
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
public User getUser() {
System.out.println("getUser()");
return user;
}
public void setUser(User user) {
System.out.println("setUser()");
this.user = user;
}
}
使用Domain Model接收参数<a href="user/user!add?user.name=a&user.age=8">添加用户</a>
附上代码结果:
private User user=new User();这种情况
getUser()
setAge()当前值0
setAge()注入后8
getUser()
setName()当前值null
setName()注入后a
name=a
age=8
private User user;这种情况
getUser()
setUser()
setAge()当前值0
setAge()注入后8
getUser()
setName()当前值null
setName()注入后a
name=a
age=8
结论: domainModel 注入 先调用对象getter方法 判断对象是否为null
为null的话 帮你创建一个User对象
调用对象的setter方法注入
然后调用属性的setter方法把属性值注入
不为null的话
直接调用属性的setter方法
第三种ModelDriven(模型驱动)
使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a>
implements ModelDriven<User>
private User user = new User();
public User getModel() {
return user;
}