struts2基本输入校验
2017-06-28 16:40
260 查看
输入校验是所有Web应用必须处理的问题,因为Web应用的开放性,网络上所有的浏览者都可以自由使用该应用,因此该应用可以通过输入页面收集的数据是非常复杂的,不仅会包含正常用户的误输入,还可以包含恶意用户的恶意输入。一个健壮的应用系统必须将这些非法输入阻止在应用之外,防止这些非法输入进入系统,这样才能保证系统不受影响。
输入校验分为客户端校验和服务器端校验,客户端校验主要是过滤正常用户的误操作,主要通过JavaScript代码来完成;服务器端校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。
输入校验是表现层数据处理的一种,因此应该由MVC框架提供。Struts2框架提供了非常强大的输入校验体系,通过Struts2内建的输入校验器,Struts2应用无须书写任何输入校验代码,即可完成绝大部分输入验证,并可以同时完成客户端校验和服务器端校验。如果应用的输入校验规则特别负责,Struts2也允许通过重写validate方法来完成自定义校验;除此之外,Struts2的开放性允许开发者提供自定义的校验器。
Struts2提供了基于校验框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的校验框架就会负责进行服务器端校验和客户端校验。。
下面举例示范如何利用Struts2的校验框架进行验证
所使用的表单代码如下:
假设表单中的4个请求参数需满足以下规则
1、name和password只能是字母和数字,且长度必须在4到25之间
2、年龄必须是1到150之间的整数
3、生日必须在1900-01-01到2050-02-21之间
使用的Action处理类
采用Struts2的校验框架时,只需要为该Action指定一个校验文件即可。校验文件是一个XML配置文件,该文件指定了Action的属性必须满足怎样的规则。下面是该应用中Action的校验文件代码。
Struts2的校验文件规则与Struts1的校验文件设计方式不同,Struts2中的每个Action都有一个校验文件。从这种设计来看,Struts2应用的Action可以非常方便地与校验规则文件同步修改同步升级,非常有利于模块化开发,Struts2的Action与校验规则文件具有如下共性。
1、Action类与校验规则文件保存在同一路径下
2、Action类的类名作为校验规则文件的文件名前缀
Struts2的校验规则文件的文件名应该遵循如下命名规则。
<Action名字>-validation.xml
增加了该校验文件后,系统会自动加载该文件。当用户提交请求时,Struts2的校验框架会根据该文件对用户请求进行校验。
struts.xml添加配置
输入校验分为客户端校验和服务器端校验,客户端校验主要是过滤正常用户的误操作,主要通过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>返回错误信息页面展示
相关文章推荐
- Struts2的Ajax输入校验
- struts2使用XML框架进行输入校验
- Struts2的输入校验(二)
- Struts2 数据输入校验(1) —— 函数验证
- Struts2输入校验
- Struts2的Ajax输入校验
- struts2中的输入校验
- struts2的输入校验
- Struts2中的输入校验
- struts2输入校验
- Struts运行的基本流程及输入校验
- Struts2.1笔记(七):Struts2输入校验
- struts2标签标签方式的输入校验与类型转换
- Struts2的输入校验(一)
- Struts2输入校验总结
- struts2学习笔记3-----输入校验
- struts2关于输入校验
- 传智播客课程——Struts2输入校验
- 使用Struts2验证框架实现输入校验
- Struts2输入校验总结