在web中,对于页面表单的输入校验,在客户端我们可以写js脚本来校验。但如果为了提高应用的安全性通常除了在客户端利用js来校验表单,我们通常还会在服务器端进行再次校验以提高安全性。而struts的输入校验则很好的解决了服务端的校验,使得开发者只需编写校验规则文件即可,这样更加方便的管理服务端的校验规则。除此以外,开发者还可以通过重写validate方法来完成自定义校验。
假如有个登录界面login.jsp中有个登录表单如下:
<s:form action="login">
<s:textfield name="name" label="用户名" />
<s:textfield name="password" label="密码" />
</s:form>
对应该表单,我们有个Action类叫LoginAction,该类的大致代码如下:
public class LoginAction extends ActionSupprts{
private String name;
private String password;
//name和password两个属性的set和get方法省略
public String execue() throws Exception{
//do something here
}
}
对应该Action我们有一个LoginAction类的校验文件。在struts2中,不同于struts1的输入校验文件命名方法,Struts2中单独对每一个Action指定一个校验文件,它的命名方式ActionName-validate.xml。他存放在与Action相同的保重,校验只需要配置一个校验文件即可实现。系统的其他地方不需要改动,系统自动加载该文件。因此我们对应LoginAction类有个loginAction-validation.xml。该校验文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!--校验文件的根元素-->
<validators>
<!--校验Action的name属性-->
<field name="name">
<!--指定name属性必须满足必填规则-->
<field-validator type="requiredstring">
<!--校验去掉name属性的前后空格,且指定name为必填属性-->
<param name="trim">true</param>
<!--提示信息-->
<message>用户名不能为空!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空!</message>
</field-validator>
<!—指定密码必须满足匹配指定的正则表达式-->
<field-validator type="regex">
<param name="expression"><![CDATA[(\4{4,12})]]></param>
<message>密码只能是字母和数字,且长度在4到12之间</message>
</field-validator>
</field>
</validators>
在该校验文件中,只有一个而且只能只有一个validators根元素,该validators根元素可以包含多个field元素,一个filed元素对应一个action的属性,更准确的说应该是对应login.jsp表单中的属性。那如果再校验中用户验证失败struts2会怎样处理呢?在struts2中,如果用户输入不符合校验文件的规则,即校验文件判断出用户输入了不合法的东西,此时struts2会返回名为“input”的Result,所以在对应的struts配置文件中,我们还需要配置一个名位“input”的Result。这里假如我们有个user-config.xml文件。该文件大致代码如下:
<action name=login class="login的包名">
<resule name="input" >/login.jsp</resule>
</action>
如果我们的应用就只我们国人用的话,那就没有必要弄个什么国际化信息咯。但为了体现我们的应用于国际接轨,通常我们都会配置国际化的信息。那如果配置国际化信息的话,那我们再验证文件中的message属性中就不能那样写中文了,而应该使用一个value-key对应的方式了。下面我们将改写校验文件loginAction-validation.xml,改写后的该文件代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!--校验文件的根元素-->
<validators>
<!--校验Action的name属性-->
<field name="name">
<!--指定name属性必须满足必填规则-->
<field-validator type="requiredstring">
<!--校验去掉name属性的前后空格,且指定name为必填属性-->
<param name="trim">true</param>
<!--提示信息-->
<message key="name.requried" /> //请注意这里的写法
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="password.requried" />
</field-validator>
<!—指定密码必须满足匹配指定的正则表达式-->
<field-validator type="regex">
<param name="expression"><![CDATA[(\4{4,12})]]></param>
<message key="password.regex" />
</field-validator>
</field>
</validators>
我们还要新建一个国际化信息的资源文件假如名叫:login-CN.properties,该资源文件中的代码如下:
name.requried=用户名为空
password.requried=密码不能为空
pass.regex=密码只能是字母和数字,且长度在4到12之间
由于我们资源文件中的中文不能被识别,所以我们需要使用比如native2ascii的软件工具转化该资源文件。
还需建一个英文的资源文件login-EN.properties,该资源文件中的代码如下:
name.requried=name cannot be empty
password.requried=password cannot be empty
pass.regex=The password is only letters and Numbers, and length in 4 to 12 between
分享到:
相关推荐
10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7....
【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf【嘉世咨询】2024休闲食品行业简析报告.pdf...
【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf【嘉世咨询】2024智能音箱市场简析报告.pdf...
针灸--非物质文化遗产简析及欣赏..ppt
2. 发送前导码:UE在指定的PRACH信道上发送选定的前导码。前导码通过无线信号传播到基站。 3. 随机接入响应:基站接收到前导码后,将通过PDCCH(Physical Downlink Control Channel,物理下行控制信道)发送随机接...
互联网金融简析ppt课件.ppt
LIN总线系统简析学习课程.pptx
LIN总线系统简析学习教案.pptx
新人班阳光社保养老简析学习教案.pptx
电气设备故障原因简析标准范本.pdf
艺恩《VR影视行业简析》报告.pdf
房产税城镇土地使用税政策简析PPT课件.pptx
嘉世咨询《2022在线旅游服务行业简析报告》.pdf
存量房房产税征收问题的简析与建议.docx
kV及以下塑料绝缘电力电缆在运行中产生的故障简析学习教案.pptx
三年级下册数学教材分析全册教材简析PPT教案.pptx
汉语离合词的离析动因与语用功能简析毕业论文.doc
SMT流程介绍DIP生产流程介绍及PCB设计工艺简析PPT教案.pptx
SMT流程介绍DIP生产流程介绍及PCB设计工艺简析学习课程.pptx
SMT流程介绍DIP生产流程介绍及PCB设计工艺简析实用教案.pptx