数据校验几乎是每个应用都要做的工作。用户输入的数据,发送到服务器端,天知道用户输入的数据是否是合法的,是否为恶意输入所。以一个健壮的应用系统必须对用户的输入进行校验,将非法的输入阻止在应用之外,防止这些非法的输入进入系统,从而保证系统的稳定性、安全性。
我们都知道,为了更好的用户体验,以及更高的效率,现在的网络应用都存在以下两重数据校验:
-
<李>客户端数据校验李>
<李>服务器端数据校验李>
对于客户端数据校验主要是通过JavaScript代码来完成;而对于服务器端数据校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
Struts2框架为了减轻开发人员的工作量,提高工作效率,在数据校验这方面也下了很大功夫,那么Struts2是如何完成数据校验的呢?(由于Struts2框架的客户端校验能力较弱,不予总结,这篇文章主要总结Struts2框架的服务器端数据校验功能)
我们都知道数据校验都是一些繁琐的代码,为了从这些繁琐的代码中抽身出来,Struts2框架提供了基于配置文件的数据校验,只需要编写校验规则文件即可,校验规则文件指定每个表单域应该满足怎样的规则。
下面通过一个演示示例来说说Struts2框架的输入校验。
前台页面:
& lt; body> & lt;形式行动=暗锹肌狈椒?皃ost”比; 用户名:& lt; input type=" text " name="名称"/祝辞& lt;销售:fielderror fieldName=皀ame”/祝辞& lt; br> 密码:& lt;输入type="密码" name="密码"/祝辞& lt;销售:fielderror fieldName=懊苈搿?祝辞& lt; br> 年龄:& lt; input type=" text " name="年龄"/祝辞& lt;销售:fielderror字段名="年龄"/祝辞& lt; br> 生日:& lt; input type=" text " name="生日快乐"/祝辞& lt;销售:fielderror fieldName=吧铡?祝辞& lt; br> & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交”/比; & lt;/form> & lt;/body>
后台行动处理代码:
公共类LoginAction ActionSupport延伸 { 私人字符串名称; 私人密码字符串; 私人int年龄; 私人生日日期; 私人字符串提示; 公共空间setName(字符串名称) { this.name=名称; } 公共字符串getName () { 返回名称; } 公共空间向setPassword(字符串密码) { 这一点。密码=密码; } 公共字符串getPassword () { 返回密码; } 公共空间setAge (int年龄) { 这一点。年龄=年龄; } 公共int getAge () { 返回年龄; } 公共空间setBirthday生日(日期) { 这一点。生日=生日; } 公共getBirthday日期() { 返回的生日; } 公共空间setTip(字符串提示) { 这一点。提示=提示; } 公共字符串getTip () { 返回提示; } 公共字符串execute()抛出异常 {//这里简化了操作 返回成功; } }
通过上面的行动代码可以看的到,我并没有为添加任何的字段校验代码,而我们只需要编写一个校验文件,如下:
& lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt; !——指定校验配置文件的DTD信息——比; & lt; !DOCTYPE验证器公共”——//Apache Struts//1.0.2 XWork验证器//EN” “http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd”在 & lt; !——校验文件的根元素——比; & lt; validators> & lt; !——校验行动的名称属性——比; & lt;字段名="名称"比; & lt; !——指定名称属性必须满足必填规则——比; & lt;字段验证程序类型=皉equiredstring”比; & lt;参数名称=靶藜簟弊4莟rue & lt; message>必须填入名字& lt;/message> & lt;/field-validator> & lt; !——指定名称属性必须匹配正则表达式——比; & lt;字段验证程序类型=罢虮泶锸健北? & lt;参数name=" regexExpression祝辞& lt; ! [CDATA [(\ w{4} 25日)]]祝辞& lt;/param> & lt; message>您输入的用户名只能是字母和数字,且长度必须在4到25之间& lt;/message> & lt;/field-validator> & lt;/field> & lt; !行动——校验的密码属性——比; & lt;字段名="密码"比; & lt;字段验证程序类型=皉equiredstring”比; & lt;参数名称=靶藜簟弊4莟rueStruts2学习教程之输入校验示例详解