Struts2的输入校验——校验规则文件的编写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2的输入校验——校验规则文件的编写相关的知识,希望对你有一定的参考价值。
Struts2的输入校验(1)
——校验规则文件的编写
Struts2提供了基于验证框架的输入校验,所有的输入校验只要编写配置文件,Struts2的验证框架将会负责进行服务器校验和客户端校验。
注:
客户端校验:过滤正常用户的误操作,使用javascript代码完成;
服务器端校验:组织非法数据的输入,是整个应用的最后防线,在应用中通过编程的方式实现。
使用Struts2的校验框架进行校验时,无须对程序的代码进行改变,只需要编写校验规则文件即可,校验规则文件制定每个表单域应该满足怎样的输入规则。
(1)现有如下表单需要提交:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>注册 - 1</title> </head> <body> <s:form action="regist_1"> <s:textfield name="username" key="用户名"/> <s:password name="password" key="密码"/> <s:textfield name="age" key="年龄"/> <s:textfield name="birth" key="生日"/> <tr> <td rowspan="1"> <s:reset value="重置" theme="simple"/> <s:submit value="注册" theme="simple"/> </td> </tr> </s:form> </body> </html>
(2)该请求对应的Action代码,这个Action类继承ActionSupport基类,使用其默认的处理逻辑,没有对封装的请求进行任何的校验:
package myAction; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class Regist1Action extends ActionSupport{ //封装请求参数 private String username; private String password; private int age; private Date birth; //setter、getter方法 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } //处理逻辑使用ActionSupport基类的默认方法 }
(3)为该Action指定一个校验规则文件,对该Action进行校验
<?xml version="1.0" encoding="UTF-8"?> <!-- 指定校验配置文件的DTD信息 --> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <!-- 校验文件的根元素 --> <validators> <!-- 校验Action的username属性 --> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入用户名</message> </field-validator> <field-validator type="regex"> <param name="regex"><![CDATA[(\w(4,25))]]></param> <message>输入的用户名必须是字母和数字,且长度在4-25之间</message> </field-validator> </field> <!-- 校验Action的password属性 --> <field name="password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入密码</message> </field-validator> <field-validator type="regex"> <param name="regex"><![CDATA[(\w(4,25))]]></param> <message>输入的密码必须是字母和数字,且长度在4-25之间</message> </field-validator> </field> <!-- 校验Action的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> <!-- 校验Action的birth属性 --> <field name="birth"> <field-validator type="date"> <param name="min">1900-01-01</param> <param name="max">2050-01-01</param> <message>输入的生日必须在${min}到${max}之间</message> </field-validator> </field> </validators>
注:此配置文件文件名格式为:ActionName-validation.xml,其中ActionName是对应Action的类名,并且此配置文件应该和Acion类在同一个路径下。
以上是关于Struts2的输入校验——校验规则文件的编写的主要内容,如果未能解决你的问题,请参考以下文章