Struts2请求数据自动封装:
(1)实现原理:参数拦截器
(2)方式1:jsp表单数据填充到action中的属性;
普通的成员变量,必须给set,get可以不给的。
注意点,Action中定义成员变量,成员变量的setXxx方法名中的Xxx和表单中name属性提交的参数对应起来的;
(3)方式2:领域模型接受表单的参数(常用),jsp表单数据填充到action的对象的属性;
对象类型,一定给get方法。
注意点:Action中定义封装的实体类对象如private User user,并给set,get方法,在jsp页面需要注意是user.id;
(4)方式3:模型驱动接受表单的参数,了解即可,这里省略;
1:方式1:
第一步:引包,省去
第二步:配置struts2的过滤器
第三步:开发Action
第四步:配置struts.xml
第五步:注册页面index.jsp
第六步:显示页面show.jsp
方式2:
第二步:配置struts2的过滤器,和上面的一样
第四步:在开发action之前需要先创建一个实体类User.java
第五步:配置struts.xml,和上面的一样,省去
第六步:注册页面index.jsp
第七步:显示页面show.jsp,和上面的一样,省去
2:Struts的数据类型转换:
(1):Struts中jsp提交的数据,struts会自动转换为action中属性的类型。对于基本数据类型以及日期类型会自动转换;日期类型只支持yyyy-MM-dd格式,如何是其他格式,需要自定义类型转换器。
(2):自定义类型转换器:
a:局部类型转换器;
b:全局类型转换器;
(3):Struts2转换器API:
|--TypeConverter 转换器接口
|--DefaultTypeConverter 默认类型转换器类
|--StrutsTypeConverter 用户编写的转换器类,继承此类即可
(4):局部类型转换器,转换器开发步骤:
《需要注意的是TypeAction和TypeAction-conversion.properties必须在同一目录下,转换器类一般在utils包下》
a:写转换器类,自定义转换器继承StrutsTypeConverter类,重写convertFromString和converToString方法;
b:注册转换器,配置转换器类(告诉struts应用自己的转换器类)
--》在同包的action目录下(在action所在包中建立),新建一个properties文件
--》命名规则:ActionClassName-conversion.properties
命名举例:TypeAction-conversion.properties
《需要注意的是TypeAction必须放在相应的目录下面。》
c:内容,在所建立的ActionClassName-conversion.properties书写如下内容;
user.birthday=转换器全路径(com.bie.type.MyConverter)
d:总结:
转换器,不能给其他Action使用。以上的转换器注册时候是与Action的名字相耦合的,因此只能在自己的Action中内部使用,称之为局部类型转换注册方式;
3:局部类型转换器,转换器开发步骤
(1):写转换器类(依旧是上面的开发案例和内容,只是增加了转换器,数据类型转换的使用)
(2):配置转换器类(告诉struts应用自己的转换器类)
(3):内容文件命名为:TypeAction-conversion.properties
4:全局类型转换器,转换器开发步骤:《需要写一个转换器,给所有的action用》
(1):写转换器类
(2):配置全局转换器类(告诉struts应用自己的转换器类)
--》在项目src目录下建立以下固定文件:xwork-conversion.properties
(3):内容
Java.util.Date=转换器类(com.bie.type.MyConverter)
(4)全局类型转换器,转换器开发步骤
局部类型转换器和全局类型转换器的主要区别就是配置的不一样;
文件命名为:xwork-conversion.properties
要转换称的某种类型的全路径 = 自定义类型转换器的全路径;
注意:可以使用多种日期格式的进行转换,主要改变的是类转换器,这样yyyy-MM-dd/yyyyMMdd/yyyy年MM月dd日,这三种格式都可以进行输入了。