1、使用原始方式获取表单数据封装到实体类对象
login.jsp
<html> <head> <title>登陆页面</title> </head> <body> <form action="test/login" method="post"> 用户:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> 地址:<input type="text" name="address"/><br> <input type="submit" value="登陆"/> </form> </body> </html>
使用ServletActionContext获取表单数据并封装到实体类对象里面
public class LoginAction { public String execute() throws Exception { // 1.获取表单数据 HttpServletRequest request = ServletActionContext.getRequest(); String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("address"); // 2.封装到实体类对象里面 User user = new User(); user.setUsername(username); user.setPassword(password); user.setAddress(address); return NONE; } }
2、属性驱动
在Struts2中,可以直接在Action中定义各种Java基本数据类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。
①直接把表单提交属性封装到action的属性里面
<body> <form action="demo1.action" method="post" > username<input type="text" name="username"><!-- name要和服务端属性名称一样 --> password<input type="text" name="password"><!-- name要和服务端属性名称一样 --> <input type="submit"> </form> </body>
②Action:注意要继承ActionSupport类
public class Damo1Action extends ActionSupport { private String username;//属性名称和表单name一样 private String password;//属性名称和表单name一样 //一定要设置get set方法 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String demo(){ System.out.println(username+"\n"+password);//即可直接获取值 return "success"; } }
3、模型驱动
使用模型驱动方式,可以直接把表单数据封装到实体类对象里面
①User实体类,属性与前端页面name值一样
public class User { String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; } }
②Action:新建一个实体类对象,注意要实现接口ModelDriven
public class Damo2Action implements ModelDriven<User>{ //实现接口ModelDriven 并且有个泛型,泛型是实体类对象 private User user=new User();//new一个全局user对象 public User getModel() {//获得模型的方法,不需要调用 return user;//返回user对象 } public String demo(){ System.out.println(user);//直接显示user return "success"; } }
4、表达式驱动
①Jsp页面
<body> <form action="demo3.action" method="post" > username<input type="text" name="user.username"><!-- name中的user是实体类对象而不是类名 --> password<input type="text" name="user.password"><!-- 通过指向不同的实体类对象就可以将一个表单页面中的内容封装到多个对象中 --> <input type="submit"> </form> </body>
②在Action中声明User实体类对象,并写出对象的get set 方法
public class Damo3Action { private User user; public User getUser(){ return user; } public void setUser(User user){ this.user=user; } public String demo(){ System.out.println(user);//直接显示user return "success"; } }
封装到List集合里面
1.在action中声明List并生成get和set方法
public class ListAction { private List<User> users; public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } public String execute(){ System.out.println(users); } }
2.在表单输入项里写表达式
<!-- 封装数据到List集合 --> <form action="${pageContext.request.contextPath}/listDemo.action" method="post"> <!--list[0]表示list集合中第一个User对象--> 名称:<input type="text" name="list[0].name"><br> 年龄:<input type="text" name="list[0].age"><br> 生日:<input type="text" name="list[0].birthday"><br> 名称:<input type="text" name="list[1].name"><br> 年龄:<input type="text" name="list[1].age"><br> 生日:<input type="text" name="list[1].birthday"><br> </form>
封装到Map集合里面
1.在action中声明Map并生成get和set方法
public class MapAction { private Map<String,User> users; public Map<String,User> getUsers() { return users; } public void setUsers(Map<String,User> users) { this.users = users; } public String execute(){ System.out.println(users); } }
2.在表单输入项里写表达式
<!-- 封装数据到Map集合 --> <form action="${pageContext.request.contextPath}/mapDemo.action" method="post"> <!-- 设置key值map['key值'],value值为表单输入值 --> 名称:<input type="text" name="map['one'].name"><br> 年龄:<input type="text" name="map['one'].age"><br> 生日:<input type="text" name="map['one'].birthday"><br> 名称:<input type="text" name="map['two'].name"><br> 年龄:<input type="text" name="map['two'].age"><br> 生日:<input type="text" name="map['two'].birthday"><br> </form>