Struts2教程02
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:上面的两个方法都必须重写.
自定义类型转换器
5
自定义类型转换器--示例:转换成int[] 自定义类型转换器--示例:转换成int[]
6
注册自定义类型转换器有两种方法
局部类型转换器:只有特定的Action才可以使用
注册方法:在Action所在的包中建立properties文件,文件 名格式:Action类名-conversion.properties,内容如下: inver=com.aptech.conversition.IntArrayConverter 其中:inver是action属性名,
注:验证文件要和Action类放在同一包中
使用struts2验证框架我们应该做什么? 使用struts2验证框架我们应该做什么?
12
两个方面
DOCTYPE
从xwork-core-2.1.6.jar中可以找到
验证内容
查看doc文档,有详尽的说明和示范
验证文件怎么写? 验证文件怎么写?
13
输入员工信息应该遵循下面的规范
boolean,char,int,long,float,double基础类型,包括 封装类型和对应数组. Date,String数组,元素类型为String的List
Struts2类型转换 Struts2类型转换
4
类型转换器是一个继承自StrutsTypeConverter (抽象类)的类,必须重写两个方法:
public Object convertFromString(Map context, String[] values, Class toClass)
从字符串转换成目标类型
public String convertToString(Map context, Object o)
将目标类型转换成字符串
总结
19
int v = Integer.parseInt(request.getParameter(v));
缺陷:
过程烦琐枯燥.
传统类型转换
3
Struts2提供了强有力的表现层类型转换机制,无 需程序员过多干预即可自动完成转换. Struts能自动处理类型转换过程中出现的未知异 常. 下面的数据类型会自动转换:
验证示例--Action 验证示例--Action
15
验证文件名称为: EmployeeAction-validation.xml
验证员工姓名
<field name="ename" > <field-validator type="requiredstring"> <param name="trim">true</param> <message>员工姓名不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">20</param> <message>员工姓名必须在${minLength}-${maxLength}个字 符之间</message> </field-validator> </field>
处理类型转换异常
8
一般来说,struts为我们提供的默认转换器能实现 大部分需求,不需要重新定义新的转换器.
类型转换器小结
9
验证器和转换器是一对兄弟,他们总是如影随形. 所有用户的输入都是邪恶的 先类型转换,再验证 Struts2主要通过验证框架来完成数据验证. Action必须继承ActionSupport
前提:Action必须是ActionSupport的子类 如果不使用struts自带的错误信息,可以在Action所在 的包中定义”Action类名.properties”文件,内容如下:
invalid.fieldvalue.inver=整型数组转换出错 其中, invalid.fieldvalue固定,inver是属性名称
</field>
17
验证失败后,struts会自动跳转到result为input 的URL中,在页面中显示错误信息使用下面的标签
<s:fielderror>
此时,显示所有错误信息 通过fieldName显示指定属性的错误信息
显示验证错误信息
18
Struts2强大的数据类型转换与验证功能不仅降 低耦合度,而且能处理复杂的任务 数据验证需要阅读相关doc,实现起来并不难,但很 有用
验证文件格式:Action类名-validation.xml
也可以为Action的方法定义一个验证文件:
必须先为方法配置action
<action name="abcdo" class="com.aptech.actions.EmployeeAction" method="abc">
验证文件格式: Action类名-name-validation.型/长整型数值范围 邮箱验证 验证字段关系 必填项验证 字符串长度验证 URL验证 正则表达式验证
正则表达式能解决绝大部分验证问题
Struts2的验证框架能做什么? Struts2的验证框架能做什么?
11
我们可以为每一个单独的Action定义一个验证文 件
全局类型转换器:所有Action都可以使用
注册方法:在classpath下建立名为 xwork-conversion.properties的文件,内容如下: 目标类型(全限定名)=转换器全限定名
注册自定义类型转换器
7
转换出错后, ConversionErrorInterceptor截拦 器会截拦转换异常,该截拦器会带领我们进入 result为input的URL,并通过 <s:fielderror></s:fielderror>显示错误信息.
员工姓名必填,且在6-20个字符之间 员工年龄必须在18-100之间 员工的邮箱必须输入正确格式 员工电话号码只接受手机号
验证示例
14
public class EmployeeAction extends ActionSupport { private String ename; private int age; private String email; private String phone; }
Struts— Struts—第二章
类型转换与输入验证
1
2.1 类型转换 2.2 输入验证 2.3 fielderror标签
目标
2
客户端浏览器只能将字符串传送到服务器(文件上 传除外),而服务器端java语言是强类型语言,数据 类型非常丰富,这就造成B/S两端的类型不兼容问 题. 传统做法:
将客户端数据转变成int
验证示例— 验证示例—验证文件
16
验证电话号码(使用正则表达式)
<field name="phone">
<field-validator type="regex"> <param name="expression">
<![CDATA[(1[358]\d\d{8})]]>
</param> <message>只接受手机号</message> </field-validator>