struts2传递参数值的3中方式
在使用struts2的时候,当要传递的参数不多的时候,我们会选择使用属性来传参,而当要传递的参数很多的时候,或者多个action会有共用的参数时,我们会使用另外两种传参方式。
注意:使用Model Driven传参时,我们需要自己new对象。
1、通过属性传参数(Attr)
UserAction.java
public class UserAction extends ActionSupport { private String name; private int age; public String add() { System.out.println("name:"+name); System.out.println("age:"+age); return SUCCESS; } public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; }
调用方法:
<a href="user/userAdd.action?name=Don&age=26">添加用户</a>
2、通过域模型传参数(Domain Model)
DTO :Data Transfer Object 数据传输对象。主要用于远程调用等需要大量传输对象的地方。比如我们一张表有 100 个字段,那么对应的 PO 就有 100 个属性。但是我们界面上只要显示 10 个字段, 客户端用 WEB service 来获取数据,没有必要把整个 PO 对象传递到客户端,这时我们就可以用只有这 10 个属性的 DTO 来传递结果到客户端,这样也不会暴露服务端表结构。
UserAction.java
public class UserAction extends ActionSupport { // 通过域模型传参数 private User user; // 通过数据传输对象传参数 // private UserDTO userDTO; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String add() { System.out.println("name:" + user.getName()); System.out.println("age:" + user.getAge()); // System.out.println("name:"+userDTO.getName()); // System.out.println("age:"+userDTO.getAge()); return SUCCESS; } // public void setUserDTO(UserDTO userDTO) { // this.userDTO = userDTO; // } // // public UserDTO getUserDTO() { // return userDTO; // } }
User.java
public class User { private String name; private int age; public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } }
UserDTO.java
//数据传输对象 public class UserDTO { private String name; private String password; private String comfirmPassword; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getComfirmPassword() { return comfirmPassword; } public void setComfirmPassword(String comfirmPassword) { this.comfirmPassword = comfirmPassword; } private int age; public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; } }
调用方法
<a href="user/userAdd.action?user.name=Don&user.age=26">添加用户</a>
3、通过模型驱动传参数(Model Driven)
UserAction.java
public class UserAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); public String add() { System.out.println("name:"+user.getName()); System.out.println("age:"+user.getAge()); return SUCCESS; } @Override public User getModel() { return user; } }
User.java
(源代码同上)
调用方法:
<p>使用ModelDriven传参数</p> <a href="user/userAdd.action?name=Don&age=26">添加用户</a>
你要坚强,坚强的足以认识自己的弱点;你要勇敢,勇敢的足以面对自己的恐惧;你要堂堂正正。在遇到挫折时能够昂首而不背躬屈膝;你要能够面对掌声,在胜利时能够谦逊而不趾高气扬。真正的伟大直率真诚,真正的贤人虚怀若谷,真正的强者温文尔雅。——萨利·布什(林肯的继母教育林肯)