Struts2以对象的方式处理表单数据

来源:互联网 发布:推荐系统算法代码 编辑:程序博客网 时间:2024/06/07 00:04

有两种方式,属性驱动和模型驱动,可以自选,如果属性较多,建议使用模型驱动


1.属性驱动
entity:

public class User {    private String name;    private String pwd;    private int age;    private String email;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    @Override    public String toString() {        return "User [name=" + name + ", pwd=" + pwd + ", age=" + age                + ", email=" + email + "]";    }}

action:

public class UserAction {    private User user;    //注册    public String register(){        System.out.println(user);        return Action.SUCCESS;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}

表单提交页面:
注意name,需要加上对象名字

<body>   <form action="register.action" method="post">    用户名<input type="text"  name="user.name"/><br>    密码<input type="text"  name="user.pwd"/><br>    年龄<input type="text"  name="user.age"/><br>    email<input type="text"  name="user.email"/><br>    <input type="submit"  value="提交"/>   </form>  </body>

struts.xml

<package  name="user"  extends="struts-default">    <action name="register" class="cn.sxt.action.UserAction" method="register">        <result>/show.jsp</result>    </action>

显示页面

<body>   ${user }  </body>

2.模型驱动
entity类就不写了
Action类

import cn.sxt.entity.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ModelDriven;//模型驱动对象赋值是由ModelDrivern拦截器来实现的,先判断action属不属于ModelDruven接口,所以需要实现这个接口public class UserModelAction implements ModelDriven<User>{    private User  user=new User();    public  String register(){        System.out.println(user);        return Action.SUCCESS;    }    @Override    public User getModel() {        return user;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }}

提交页面,name不用写对象名字了

 <body>   <form action="regModel.action" method="post">    用户名<input type="text"  name="name"/><br>    密码<input type="text"  name="pwd"/><br>    年龄<input type="text"  name="age"/><br>    email<input type="text"  name="email"/><br>    <input type="submit"  value="提交"/>   </form>  </body>

struts.xml

    <action name="regModel" class="cn.sxt.action.UserModelAction" method="register">        <result>/show.jsp</result>    </action>