Struts2接收参数的几种方式:
1. 用Action的属性:
在action里面定义要接收的参数,并提供相应的setter,getter,可以和提交参数的名称一致,并不用做数据类型的转换。
如:
Java代码
1. public class UserAction extends ActionSupport {
2. private String password;
3. pirvate String name;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(name +”:”+passowrd);
9. return “success”;
10.
11. }
12.
13. }
public class UserAction extends ActionSupport {
private String password;
pirvate String name;
//……对应的setter,getter方法
public void execeute() {
System.out.println(name +”:”+passowrd);
return “success”;
}
}
相应提交方式可以用get和post,如:userAction?password=admin&name=admin
2. 使用Domain Model:
在Action里面不存很多的属性,而是用Model层用到的模型,保存它的一个对象
如:
Java代码
1. public class UserAction extends ActionSupport {
2.
3. private User user;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(user.getName() +”:”+user.getPassowrd());
9. return “success”;
10.
11. }
12.
13. }
public class UserAction extends ActionSupport {
private User user;
//……对应的setter,getter方法
public void execeute() {
System.out.println(user.getName() +”:”+user.getPassowrd());
return “success”;
}
}
提交参数:userAction?user.password=1&user.name=admin;这里面的user指向Action里面的user。
3. 使用DTO--数据传输对象
它的作用是接收参数,传递参数,并不是项目中的实体类。如用户注册时,会用到确认密码,所以要先把参数接收过来,做处理后,再传递给相应方法去创建User对象。
Java代码
1. public class UserDTO {
2.
3. private String name;
4. private String password;
5. private String confirm;
6. //……对应的setter,getter方法
7. }
public class UserDTO {
private String name;
private String password;
private String confirm;
//……对应的setter,getter方法
}
可能的Action
Java代码
1. public class UserAction extends ActionSupport {
2.
3. private UserDTO user;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. if(checkdate(userDTO userDTO) )//检查数据{
9. newUser(UserDTO userDTO)//创建User对象
10.
11. System.out.println(user.name +”:”+user.passowrd);
12.
13. return “success”;
14. }
15. return “fail”;
16.
17. }
18.
19. }
public class UserAction extends ActionSupport {
private UserDTO user;
//……对应的setter,getter方法
public void execeute() {
if(checkdate(userDTO userDTO) )//检查数据{
newUser(UserDTO userDTO)//创建User对象
System.out.println(user.name +”:”+user.passowrd);
return “success”;
}
return “fail”;
}
}
提交参数的方式的Domail Model方式的相同。
4.使用ModelDriven:
在创建Action的时候,发现Action实现了ModelDriven接口,去调用 接口的getModel()方法,取到了User。
Java代码
1. public class UserAction extends ActionSupport implements ModelDriven<User> {
2.
3. private User user = new User(); //这里要手动的New下
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(user.name +”:”+user.passowrd);
9. return “success”;
10.
11. }
12.
13. @Override
14. public User getModel() {
15. return user;
16. }
17. }
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User(); //这里要手动的New下
//……对应的setter,getter方法
public void execeute() {
System.out.println(user.name +”:”+user.passowrd);
return “success”;
}
@Override
public User getModel() {
return user;
}
}
相应提交方式可以用get和post,如:userAction?password=admin&name=admin
1. 用Action的属性:
在action里面定义要接收的参数,并提供相应的setter,getter,可以和提交参数的名称一致,并不用做数据类型的转换。
如:
Java代码
1. public class UserAction extends ActionSupport {
2. private String password;
3. pirvate String name;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(name +”:”+passowrd);
9. return “success”;
10.
11. }
12.
13. }
public class UserAction extends ActionSupport {
private String password;
pirvate String name;
//……对应的setter,getter方法
public void execeute() {
System.out.println(name +”:”+passowrd);
return “success”;
}
}
相应提交方式可以用get和post,如:userAction?password=admin&name=admin
2. 使用Domain Model:
在Action里面不存很多的属性,而是用Model层用到的模型,保存它的一个对象
如:
Java代码
1. public class UserAction extends ActionSupport {
2.
3. private User user;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(user.getName() +”:”+user.getPassowrd());
9. return “success”;
10.
11. }
12.
13. }
public class UserAction extends ActionSupport {
private User user;
//……对应的setter,getter方法
public void execeute() {
System.out.println(user.getName() +”:”+user.getPassowrd());
return “success”;
}
}
提交参数:userAction?user.password=1&user.name=admin;这里面的user指向Action里面的user。
3. 使用DTO--数据传输对象
它的作用是接收参数,传递参数,并不是项目中的实体类。如用户注册时,会用到确认密码,所以要先把参数接收过来,做处理后,再传递给相应方法去创建User对象。
Java代码
1. public class UserDTO {
2.
3. private String name;
4. private String password;
5. private String confirm;
6. //……对应的setter,getter方法
7. }
public class UserDTO {
private String name;
private String password;
private String confirm;
//……对应的setter,getter方法
}
可能的Action
Java代码
1. public class UserAction extends ActionSupport {
2.
3. private UserDTO user;
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. if(checkdate(userDTO userDTO) )//检查数据{
9. newUser(UserDTO userDTO)//创建User对象
10.
11. System.out.println(user.name +”:”+user.passowrd);
12.
13. return “success”;
14. }
15. return “fail”;
16.
17. }
18.
19. }
public class UserAction extends ActionSupport {
private UserDTO user;
//……对应的setter,getter方法
public void execeute() {
if(checkdate(userDTO userDTO) )//检查数据{
newUser(UserDTO userDTO)//创建User对象
System.out.println(user.name +”:”+user.passowrd);
return “success”;
}
return “fail”;
}
}
提交参数的方式的Domail Model方式的相同。
4.使用ModelDriven:
在创建Action的时候,发现Action实现了ModelDriven接口,去调用 接口的getModel()方法,取到了User。
Java代码
1. public class UserAction extends ActionSupport implements ModelDriven<User> {
2.
3. private User user = new User(); //这里要手动的New下
4.
5. //……对应的setter,getter方法
6.
7. public void execeute() {
8. System.out.println(user.name +”:”+user.passowrd);
9. return “success”;
10.
11. }
12.
13. @Override
14. public User getModel() {
15. return user;
16. }
17. }
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User(); //这里要手动的New下
//……对应的setter,getter方法
public void execeute() {
System.out.println(user.name +”:”+user.passowrd);
return “success”;
}
@Override
public User getModel() {
return user;
}
}
相应提交方式可以用get和post,如:userAction?password=admin&name=admin