简析struts2.x中的输入校验
来源:互联网 发布:linux视频编辑器4k 编辑:程序博客网 时间:2024/05/19 19:59
在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 emptypassword.requried=password cannot be empty pass.regex=The password is only letters and Numbers, and length in 4 to 12 between
- 简析struts2.x中的输入校验
- Struts2中的输入校验
- Struts2.x 学习笔记 之 输入校验
- 输入校验二(struts2中的输入校验,服务器端)
- Struts2中的两种输入校验方法
- Struts2中的两种输入校验方法
- struts2中的输入校验小例子
- Struts2输入校验实例
- struts2关于输入校验
- struts2 输入校验
- Struts2输入校验
- Struts2输入校验
- Struts2输入校验总结
- Struts2(服务器端)输入校验
- Struts2输入校验
- struts2输入校验
- struts2输入校验
- Struts2输入校验总结
- logistic 回归模型
- qt笔记1
- emacs的java编程环境设置(jdee,lib,cedet,ecb
- 知名大学硕博论文及英文期刊全文资源集合
- redhat linux websphere 6 命令行安装(静默安装)
- 简析struts2.x中的输入校验
- php实现远程关机
- 抒写Linux 2.6.x下内核级后门程序
- HashSet和HashMap的关系
- IDC初步学习小小结
- 使用Python实现Telnet远程登录
- python之多线程2
- 互联网产品设计:产品即服务
- Estjs combobox多级联动 去除第一次加载所有都读取的问题