**
请求参数封装
第一种方式:
index.jsp
Action
/*
* 请求参数封装
* 第一种方法:
* 属性驱动:没有实体类
* 表单的数据都定义在动作类中
* 要封装成功需要按照要求:
* 表单元素的name属性取值,必须和动作类中get/set方法后面部分保持一致
* 如:表单元素name属性:name
* 则动作类中必须有setName getName
*
* 细节:
* struts2框架会为我们解决post请求的中文乱码问题,但是get请求不解决
* struts2会为我们自动转换数据类型:
* 基本类型自动转换
* 同一个name的字符串会以逗号加空格的方式拼接起来
* 例如多选框提交的多个value会拼接起来
* 日期类型会按照本地格式转成日期对象
* 本地格式:yyyy-MM-dd
*
* 执行参数封装,是一个名称为params的拦截器实现的。
*
*
*/
public class DemoAction {
String name;
String sex;
public String demo1(){
System.out.println(name+" "+sex);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
第二种方式:
index.jsp
Action
/*
* 第二种方式:
* 属性驱动:有实体类
* 表单的数据都定义在实体类中,实体类定义在动作类中
* 要封装成功需要按照要求:
* 此时需要OGNL表达式来指定表单元素的name属性
* 写法:
* user.name user.sex
*
*
*/
public class DemoAction {
private User user;
public String demo1(){
System.out.println(user);
return "success";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
User.java
public class User {
String name;
String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", sex=" + sex + "]";
}
}
第三种方式:
index.jsp
Action
/*
* 第三种方式:
* 模型驱动:
* 要封装成功需要按照要求:
* 动作类必须实现ModelDriven接口
* 动作类中需要定义模型,并且必须实例化出来
* 提供接口抽象方法的实现,返回值为模型对象
* 模型驱动的实现,除了params拦截器之外,还需要一个叫modelDriven的拦截器配合
*
*/
public class DemoAction implements ModelDriven<User> {
private User user = new User();
public String demo1(){
System.out.println(user);
return "success";
}
@Override
public User getModel() {
return user;
}
}
复杂类型的封装:List集合封装
index.jsp
Action
/*
* 复杂类型的封装:List集合封装
* 复杂类型的封装都需要基于第二种情况实现
*
*
*/
public class DemoAction {
private List<User> users;
public String demo1(){
System.out.println(users);
return "success";
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}