【Struts2】06 数据封装
Struts2提供了三种封装方式:
1、属性封装
2、模型封装
3、表达式封装
属性封装
就是Action类中声明请求发送过来的参数K键的值
例如表单信息的这些username & password;
用户名称<input type="text" name="username"> <br> 用户密码<input type="text" name="password">
然后Action类就这样来设置
@Override public String execute() throws Exception { System.out.println(username + " " + password); return super.execute(); }
模型封装:
Struts2支持模型类实例的属性封装
声明一个模型类:
package cn.dzz.pojo; /** * @author Echo42 * @file Struts2 * @create 2020年08月29日17:42 */ public class User { private 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; } public User() { } public User(String username, String password) { this.username = username; this.password = password; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
Action类的改变:
这也好像没太大区别。。

注意的问题就是属性和模型不可以同时使用,如果同时使用,Struts2会注入模型,属性则注入空了。。。
表达式封装:

然后表单或者参数的声明就是这样设置:
用户名称<input type="text" name="user.username"> <br> 用户密码<input type="text" name="user.password">
集合类型封装:
List集合类型:

请求参数:
用户名称<input type="text" name="userList[0].username"> <br> 用户密码<input type="text" name="userList[0].password"> <br> 用户名称<input type="text" name="userList[1].username"> <br> 用户密码<input type="text" name="userList[1].password"> <br> 用户名称<input type="text" name="userList[2].username"> <br> 用户密码<input type="text" name="userList[2].password">
同理Map类型:

表单的name属性写法:
用户名称<input type="text" name="userMap['one'].username"> <br> 用户密码<input type="text" name="userMap['one'].password"> <br> 用户名称<input type="text" name="userMap['two'].username"> <br> 用户密码<input type="text" name="userMap['two'].password"> <br> 用户名称<input type="text" name="userMap['three'].username"> <br> 用户密码<input type="text" name="userMap['three'].password">
中括号的名称就是Map中的值的名称,
当前的值类型为User类型,实例的名称就是这个表单的命名

浙公网安备 33010602011771号