Struts2框架学习---TWO

来源:互联网 发布:淘宝消保多少钱 编辑:程序博客网 时间:2024/06/18 09:14

通过阅读本文你将掌握:
                   Action对请求参数的处理;
                   Struts2框架中的类型转换;
                   Struts2框架对请求参数的校验。


struts2中获取请求参数

1、属性驱动:
1.1、直接将action做一个model,声明变量,提供getXX()/setXX()方法。
属性驱动1
结果:
结果
缺点:需要单独定义JavaBean,将action中的属性复制到JavaBean中。
优点:easy。
1.2、在action中声明一个model
这里写图片描述
结果:
这里写图片描述

实现原理:
通过struts2的拦截器实现:
这里写图片描述

2、模型驱动
让Action类实现ModelDriven接口,重写getModel()方法,在Action类中实例化一个model对象,然getModel()方法返回此对象。
这里写图片描述


将数据封装到集合中
1、封装到List集合中:
在User类中添加
这里写图片描述
jsp页面的书写:
这里写图片描述

2、封装到Map集合中:
在User类中添加:
这里写图片描述
jsp书写方法:
这里写图片描述
控制台结果:
这里写图片描述

struts2中的类型转换

错误的输入格式
在输入以上所示日期格式后登陆出现错误。因为没有对应格式的类型转换器。
struts2提供了大量的内部类型转换器,用来完成数据类型转换的问题。每个类型转换器的跟接口为TypeConverter.
这里写图片描述

自定义类型转换器
步骤:
1、创建一个类实现TypeConverter接口;
2、重写接口中的方法,实现类型转换操作;
3、注册类型转换器。
由于实现TypeConverter接口所需重写方法参数太多了(6个),所以我选择继承StrutsTypeConverter这个类,重写它的方法。
更重要的原因是这个类将页面传递的数据封装,以及action中的数据怎样在页面上显示做了分离。
自定义类型转换器
仅仅是如此是无法完成转换的,还需要注册类型转换器。
1、局部类型转换器
1.1、针对于action:
配置文件所在位置及名称:
在Action类所在包中创建文件名为:Action类名-conversion.properties的文件。
配置格式:属性名=类型转换器的全类名
这里写图片描述
1.2、针对于model
配置文件所在位置及名称:
在Model所在包中创建文件名为:Model名-conversion.properties的文件。
配置格式:属性名=类型转换器的全类名
这里写图片描述
2、全局类型转换器
配置文件所在位置及名称:
在src包下创建文件名为:xwork-conversion.properties的文件。
配置格式:要转换的类型全名=类型转换器的全类名
这里写图片描述


当类型转换错误时,页面如下所示:
这里写图片描述
提示我们没有对应的input视图,所有我们要为转换错误配置一个input视图。
思考:为什么会要求向input视图上跳转呢?
这里写图片描述
在自定义类型转换器中,转换错误,页面没有向input视图跳转?
在自定义类型转换器中必须抛出异常才可以。
这里写图片描述


Struts2框架提供的数据校验

在Struts2框架中我们实现数据校验有两种方法:
1、手动校验
要求:Action类必须继承ActionSupport类才能提供校验。重写validate()方法
通过测试我们发现validate()方法先于请求处理方法执行。

这里写图片描述
页面上展示错误信息:
这里写图片描述
发现问题:
validate()方法总是会执行,即使是某个不需要校验的方法。这当然不行
解决方案:
创建一个名为validate+请求处理方法名()的方法。
例如validateLogin()方法,此方法只会对注册这一请求进行校验,对regist请求不会校验。
2、配置校验
struts2的校验框架已经完成了很多校验方法,我们在使用时只需要调用即可。
要求:继承ActionSupport类
如何配置?
位置:与Action类放在同一个包下;
名称:Action类名-validate.xml;
所需约定:

<!DOCTYPE validators PUBLIC        "-//Apache Struts//XWork Validator 1.0.3//EN"        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

约定可在xwork-core-2.3.15.3.jar中xwork-validator-1.0.3.dtd中查找到。
约束文件
书写格式:
1、根元素:<validators>
2、子元素:<field name=”属性名称”></field>
3、<field>子元素:<field-validator type=”校验器”>指定校验器。

示例:
这里写图片描述

Struts2中的内置校验器:
这里写图片描述

校验器介绍:
这里写图片描述

问题:在配置校验中如何对特定的请求处理方法执行校验?
答:修改校验文件名:action类名-请求处理方法名-validate.xml