天天看点

Struts2(接受表单参数)请求数据自动封装和数据类型转换

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日,这三种格式都可以进行输入了。