浅谈struts的数据验证机制


作为一个刚入门的程序猿,最近学习各种头疼。今天看了看struts的数据验证机制,现在对自己总结一番。注:部分内容来自其他博客

1 在Struts2API中,ActionSupport类对Validateable接口进行了实现,但对validate()方法的实现却是一个空实现,通常情况下,我们所创建的Action对象,都是通过继承ActionSupport类进行创建,所以,在继承ActionSupport类的情况下,如果通过validate()方法验证数据的有效性,直接重写validate()方法。使用validate()方法可以对用户请求的多个Action方法的进行验证,但其验证的逻辑是相同的,如果在一个Action类中编写了多个请求处理方法,而此Action重写了validate()方法,那么,默认情况下,在执行每一个请求方法的过程中,都会经过validate()方法的验证处理。

2验证文件的命名规则?
1)ActionName-validation.xml方式命名
适用于:Action对象中只存在单一的处理方法或在多个请求处理方法中,验证处理的规则都相同。
2)ActionName-AliasName-validation.xml方式命名
适用于:Action对象中有多个请求处理方法,而只需对特定的请求处理方法进行验证。
3 先来看一个简单的例子
3.1  下图为本例的树形结构。其中需要注意的是,验证文件UserAction-validation.xml必须放置在UserAction所在的包中。
包的结构
3.2 index.jsp界面文件,实现一个简单的登陆界面。
<%@ 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>用户登录</title>
<style type="text/css">
	*{font-size: 12px;}
</style>
</head>
<body>
	<s:form action="userAction" method="post">
		<s:textfield name="username" label="用户名" required="true"></s:textfield>
		<s:password name="password" label="密码" required="true"></s:password>
		<s:submit key="submit" value="登录"></s:submit>
	</s:form>
</body>
</html>
3.3 验证框架UserAction-validation.xml
UserAction-validation.xml是UserAction对象的验证文件,当执行UserAction对象时,Struts2会加载验证文件对UserAction中的内容进行验证处理。验证用户名和密码是否为空,当为空时会自己提醒。name需要一一对应。
<?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>
	<!-- 验证用户名 -->
	<field name="username">
		<field-validator type="requiredstring">
			<message>请输入用户名</message>
		</field-validator>
	</field>
	<!-- 验证密码 -->
	<field name="password">
		<field-validator type="requiredstring">
			<message>请输入密码</message>
		</field-validator>
	</field>
</validators>

4、Struts2的内置验证器
4.1 required验证器

<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

用于验证输入的数据是否为null,如果数据值为null,则验证失败。
4.2 requiredstring验证器

<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

用于验证输入的诗句是否为空的字符串,如果数据值为空的字符串”“,则验证失败。
包含一个boolean类型的参数trim,用于设置是否调用String类的String类的trim()方法去除输入字符串的首尾空字符,默认为true。
4.3 int验证器、long验证器、short验证器、double验证器、date验证器

<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>

用于验证输入的数据是否为整型、长整型、短整型、双精度浮点数值、日期型数值
参数:
min:用于设置参数的最小值; max:用于设置参数的最大值
double验证器有4个参数:minInclusive、 maxInclusive、 minExclusive、 maxExclusive
4.4 expression验证器

<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>

根据值栈中的OGNL表达式进行验证,例如:

<validators>

<validator type="expression">

<param name="expression">password==confirmPassword</param>

<message>密码与确认密码必须相同</message>

</validator>

</validators>

4.5 fieldexpression验证器

<validator name="fieldexrpession" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>

根据OGNL表达式对字段进行验证,返回true则验证通过。

<validators>

<validator type="fieldexpression">

<param name="filedName">confirmPassword</param>

<param name="expression">password==confirmPassword</param>

<message>密码与确认密码必须相同</message>

</validator>

</validators>

4.6 email验证器

<validator name="email" class="com.opensy^mphony.xwork2.validator.validators.EmailValidator"/>

判断输入数据是否与以下正则表达式相匹配:

\\b(^['_A-Za-z0-9-]+('_A-Za-z0-9-]+)*@([A-Za-z0-9])+(\\A-Za-z0-9-]+)*((\\.[A-Za-z0-9]{2,})|(\\.[A-Za-z0-9]{2,}\\.[A-Za-z0-9]{2,}))$)\\b

4.7 url验证器

<validator name="url" class="com.opensy^mphony.xwork2.validator.validators.URLValidator"/>

4.8 conversion验证器

<validator name="conversion" class="com.opensy^mphony.xwork2.validator.validators.ConversionErrorValidator"/>

4.9 stringlength验证器

<validator name="stringlength" class="com.opensy^mphony.xwork2.validator.validators.StrigLengthFieldValidator"/>

验证输入的数据是否在指定的字符串长度之内。
4.10 regex验证器

<validator name="regex" class="com.opensy^mphony.xwork2.validator.validators.RegexFieldValidator"/>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值