struts2中封装获取表单数据的几种方式

1. 原始方式获取表单数据封装到实体类对象

 1 public class Form extends ActionSupport{
 2   
 3     public String execute()throws Exception{
 4      
 5      //1.获取表单数据,使用耦合的方式
 6      HttpServletRequest request = ServlertActionContext.getRequest();
 7 
 8      String username =  request.getParameter("username");
 9      String password = request.getParameter("password"); 
10      //2.封装到实体类对象中
11      User user =new User();
12      user.setUsername(username);
13      user.setPassword(password);
14      Sysout.out.println(user); 
15      return NONE;
16     }
17  
18 }
1  <form action="" method="post">
2       <input type="text" name="username"/>
3       <input type="text" name="password"/>
4       <input type="submit" value=""/>
5  </form>

2.属性封装

 1 public class Form extends ActionSupport {
 2     //1.定义变量,变量名和表单属性name值一致
 3     private String username;
 4     private String password;
 5 
 6     @Override
 7     public String execute() throws Exception {
 8         System.out.println("username:" + username + "password:" + password);
 9         return NONE;
10     }
11     //2.设置变量的get,set方法
12     public String getUsername() {
13         return username;
14     }
15 
16     public void setUsername(String username) {
17         this.username = username;
18     }
19 
20     public String getPassword() {
21         return password;
22     }
23 
24     public void setPassword(String password) {
25         this.password = password;
26     }
27 }

 

1  <form action="" method="post">
2       <input type="text" name="username"/>
3       <input type="text" name="password"/>
4       <input type="submit" value=""/>
5  </form>

3. 模型驱动封装

 1 public class Form extends ActionSupport implements ModelDriven<User>{
 2     // 实现ModelDriven接口
 3     //创建user对象,表单name属性值要和实体类User中属性名称一致
 4     private User user = new User();
 5 
 6     @Override
 7     public User getModel() {
 8         //返回创建的user对象
 9         return user;
10     }
11     
12     @Override
13     public String execute() throws Exception {
14         System.out.println(user);
15         return NONE;
16     }
17 }

 

1 <form action="" method="post">
2       <input type="text" name="username"/>
3       <input type="text" name="password"/>
4       <input type="submit" value=""/>
5 </form>

4.表达式封装

 1 public class Form extends ActionSupport {
 2     //1.声明实体类
 3     private User user;
 4     //2.生成实体类变量的get,set方法
 5 
 6     public User getUser() {
 7         return user;
 8     }
 9 
10     public void setUser(User user) {
11         this.user = user;
12     }
13     
14     @Override
15     public String execute() throws Exception {
16         System.out.println(user);
17         return NONE;
18     }
19 
20 }
1 <form action="" method="post">
2       <input type="text" name="user.username"/>
3       <input type="text" name="user.password"/>
4       <input type="submit" value=""/>
5 </form>
注意:表单属性name值需要使用对象.属性名(OGNL(对象导航图)表达式)

注意:如果在一个action中既使用了属性封装,又使用了模型驱动封住,最后只会执行模型驱动。可debug自测。

 

posted @ 2018-01-17 20:58  ___struggle  阅读(154)  评论(0编辑  收藏  举报