第一种方式:
/**
-
请求参数封装
-
第一种情况:
-
属性驱动:没有实体类
-
表单数据的接收都定义在动作类中,所以称为动作类和模型数据写在一起
-
要想封装成功,需要按照要求书写:
-
要求是:表单元素的name属性取值,必须和动作类中成员get/set方法后面的部分保持一致
-
细节:
-
1、struts2框架会我们解决post请求的中文乱码问题,但是get请求不解决。
2、struts2框架会自动为我们转换数据类型:
基本类型自动转换
字符串数组会按照逗号+空格的方式拼接成字符串
日期类型会按照本地格式转成日期对象
本地格式:yyyy-MM-dd
执行参数封装,是一个名称为params的拦截器实现的。
封装的规则只有一个,它要去指定位置找属性,找到之后调用set方法赋值。
例:
第二种情况:
- 属性驱动:有实体类
- 表单数据的接收都定义在实体类中,把实体类定义在动作类中。
- 要想封装成功,需要按照要求书写:
- 此时需要使用OGNL表达式来指定表单元素的name取值
- OGNL表达式全称:Object Graphic Navigation Language
对象 图 导航 语言 - 写法:
user.username user.age - 执行参数封装,是一个名称为params的拦截器实现的。
- 封装的规则只有一个,它要去指定位置找属性,找到之后调用set方法赋值。
- 例子
-
- 第三种情况: 用的最多的方式
- 模型驱动
- 要想封装成功,需要按照要求书写:
- 1、动作类必须实现ModelDriven接口
- 2、动作类中需要定义模型,并且必须实例化出来
- 3、提供接口抽象方法的实现,返回值必须是模型对象
- 执行参数封装,是一个名称为params的拦截器实现的。
- 模型驱动的实现,出来params拦截器之外,还需要一个叫modelDriven的拦截器配合
- 封装的规则只有一个,它要去指定位置找属性,找到之后调用set方法赋值。
- 谢谢大家