Struts2学习之路(5)请求参数封装

**

请求参数封装

第一种方式:

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;
    }


}

猜你喜欢

转载自blog.csdn.net/QEcode/article/details/80912510