首页 > 代码库 > struts2传递参数值的3中方式

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>

 

struts2传递参数值的3中方式