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自测。