校验框架

输入校验的必要性

所有用户的输入都是邪恶的,为了保证数据的合法性,输入校验就显得尤为重要。

校验的方式

输入校验分为客户端校验和服务器端校验。 客户端校验可以过滤掉用户的错误操作,是第一道防线,一般使用JavaScript代码实现。 仅有客户端验证还是不够的。攻击者还可以绕过客户端校验直接进行非法输入,这样可能会引起系统的异常,为了确保数据的合法性,防止用户通过非正常手段提交错误信息。所以必须加上服务器端的验证。

手动编程校验

手动编程方式:主要是通过在类中编写校验逻辑代码。 手动编程方式 方式一:重写validate()方法: validate()方法会校验action中所有与execute方法签名相同的方法。 方式二:重写validateXxx()方法:validateXxx()只会校验action中方法名为Xxx的方法。

重写validate()方法

validate()方法会校验action中所有与execute方法签名相同的方法。 当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ) 如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。

Action类继承ActionSupport类,struts.xml中添加input的result视图。 验证失败后,请求转发至input视图

 

重写validateXxx()方法

通过validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。 当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport )。 如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。

Action类继承ActionSupport类,struts.xml中添加input的result视图, 验证失败后,请求转发至input视图

校验框架概述

使用struts2校验框架:把校验逻辑放到配置文件中,实现校验逻辑代码与业务逻辑代码的分离。 使用基于校验框架校验方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件。 框架校验方式 方式一:校验action中所有与execute方法签名相同的方法。 方式二:校验action的某个与execute方法签名相同方法。

 

Struts2内置的校验器

Struts 2提供了非常多的默认校验器。在开发中使用内置的校验器能满足大部分的校验需求。这些校验器的定义可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。

系统提供的内置校验器如下:

required (必填校验器,要求field的值不能为null)

requiredstring (必填字符串校验器,要求field的值不能为null,并且长度大于0,默认情况下会对字符串去前后空格)

stringlength(字符串长度校验器,要求field的值必须在指定的范围内,否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否去除字符串前后的空格)

regex(正则表达式校验器,检查被校验的field是否匹配一个正则表达式.expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true)

int(整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值)

double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)

fieldexpression(字段OGNL表达式校验器,要求field满足一个ognl表达式,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过)

email(邮件地址校验器,要求如果field的值非空,则必须是合法的邮件地址)

url(网址校验器,要求如果field的值非空,则必须是合法的url地址)

date(日期校验器,要求field的日期值必须在指定范围内,min指定最小值,max指定最大值)

conversion(转换校验器,指定在类型转换失败时,提示的错误信息)

visitor(用于校验action中的复合属性,它指定一个校验文件用于校验复合属性中的属性)

expression(OGNL表达式校验器,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)

posted @ 2017-03-20 15:32  污界清流  阅读(230)  评论(0)    收藏  举报