struts2基本输入校验
来源:互联网 发布:手机淘宝实人认证在哪 编辑:程序博客网 时间:2024/05/21 05:06
输入校验是所有Web应用必须处理的问题,因为Web应用的开放性,网络上所有的浏览者都可以自由使用该应用,因此该应用可以通过输入页面收集的数据是非常复杂的,不仅会包含正常用户的误输入,还可以包含恶意用户的恶意输入。一个健壮的应用系统必须将这些非法输入阻止在应用之外,防止这些非法输入进入系统,这样才能保证系统不受影响。
输入校验分为客户端校验和服务器端校验,客户端校验主要是过滤正常用户的误操作,主要通过JavaScript代码来完成;服务器端校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
输入校验是表现层数据处理的一种,因此应该由MVC框架提供。Struts2框架提供了非常强大的输入校验体系,通过Struts2内建的输入校验器,Struts2应用无须书写任何输入校验代码,即可完成绝大部分输入验证,并可以同时完成客户端校验和服务器端校验。如果应用的输入校验规则特别负责,Struts2也允许通过重写validate方法来完成自定义校验;除此之外,Struts2的开放性允许开发者提供自定义的校验器。
Struts2提供了基于校验框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的校验框架就会负责进行服务器端校验和客户端校验。。
下面举例示范如何利用Struts2的校验框架进行验证
所使用的表单代码如下:
<s:fielderror></s:fielderror> <form action="regist" method="post"> 用户名:<input type="text" name="name"/><br/> 密码:<input type="password" name="password"/><br/> 年龄:<input type="text" name="age"/><br/> 生日:<input type="text" name="birth"/><br/> <input type="submit" value="注册"/> </form>
假设表单中的4个请求参数需满足以下规则
1、name和password只能是字母和数字,且长度必须在4到25之间
2、年龄必须是1到150之间的整数
3、生日必须在1900-01-01到2050-02-21之间
使用的Action处理类
package com.test.action;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegistAction extends ActionSupport{//该请求包含的4个请求参数private String name;private String password;private int age;private Date birth;//此处省略4个属性的set和get方法 ...}
采用Struts2的校验框架时,只需要为该Action指定一个校验文件即可。校验文件是一个XML配置文件,该文件指定了Action的属性必须满足怎样的规则。下面是该应用中Action的校验文件代码。
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"><!-- 校验文件的根元素 --><validators><!-- 校验Action的name属性 --><field name="name"><!-- 指定name属性必须满足必填规则 --><field-validator type="requiredstring"><param name="trim">true</param><message>必须输入名字</message></field-validator><!-- 指定name属性必须满足匹配指定的正则表达式 --><field-validator type="regex"><param name="regex"><![CDATA[(\w{4,25})]]></param><message>您输入的用户名只能是字母和数字,且长度必须在4到25之间</message></field-validator></field><!-- 校验Action的password属性 --><field name="password"><!-- 指定password属性必须满足必填规则 --><field-validator type="requiredstring"><param name="trim">true</param><message>必须输入密码</message></field-validator><!-- 指定password属性必须满足匹配指定的正则表达式 --><field-validator type="regex"><param name="regex"><![CDATA[(\w{4,25})]]></param><message>您输入的密码只能是字母和数字,且长度必须在4到25之间</message></field-validator></field><!-- 指定age属性必须在指定范围内 --><field name="age"><field-validator type="int"><param name="min">1</param><param name="max">150</param><message>年龄必须在1到150之间</message></field-validator></field><!-- 指定birth属性必须在指定范围内 --><field name="birth"><field-validator type="date"><!-- 下面指定日期字符串时,必须使用本Locale的日期格式 --><param name="min">1900-01-01</param><param name="max">2050-02-21</param><message>生日必须在${min}到${max}之间</message></field-validator></field></validators>
Struts2的校验文件规则与Struts1的校验文件设计方式不同,Struts2中的每个Action都有一个校验文件。从这种设计来看,Struts2应用的Action可以非常方便地与校验规则文件同步修改同步升级,非常有利于模块化开发,Struts2的Action与校验规则文件具有如下共性。
1、Action类与校验规则文件保存在同一路径下
2、Action类的类名作为校验规则文件的文件名前缀
Struts2的校验规则文件的文件名应该遵循如下命名规则。
<Action名字>-validation.xml
增加了该校验文件后,系统会自动加载该文件。当用户提交请求时,Struts2的校验框架会根据该文件对用户请求进行校验。
struts.xml添加配置
<action name="regist" class="com.test.action.RegistAction"><result name="input">regist.jsp</result><result>show.jsp</result></action>返回错误信息页面展示
阅读全文
0 0
- struts2基本输入校验
- Struts2输入校验实例
- struts2关于输入校验
- struts2 输入校验
- Struts2输入校验
- Struts2输入校验
- Struts2输入校验总结
- Struts2中的输入校验
- Struts2(服务器端)输入校验
- Struts2输入校验
- struts2输入校验
- struts2输入校验
- Struts2输入校验总结
- struts2输入校验流程
- struts2输入校验
- Struts2的 输入校验
- struts2 输入校验
- Struts2输入校验总结
- 无线通信芯片又一神兽诞生,中兴NB-IoT芯片朱雀7100定了
- 加载数字图片(cocos2dx)
- 几种单例模式
- IE8中parseInt的坑
- c++入门基础知识
- struts2基本输入校验
- 心之力
- CodeVS2058 括号序列 题解
- Mysql在insert触发器里如何update当前数据
- 关于Mysql 全文索引的使用
- linux 上使用commons-net.jar中 FTPClient类的listFiles、retrieveFile等方法停止不执行,出现假死状态解决办法
- 洛谷2661-tarjan-强连通分量
- redis在window下安装
- Android 开发之 ---- bootloader (LK)