验证框架(Struts)

在Struts中提供了Validator框架以完成对于输入数据的验证功能。

Validator框架是随Struts一起提供的,所以要想启动验证框架,只需要在struts-config.xml文件中编写以下配置即可。

<plug-in className="org.apache.struts.validator.ValidatorPlugln">
	<set-property property="pathnames"
		value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
在此配置中,通过<plug-in>元素定义了一个Struts验证框架的支持类org.apache.struts.validator.ValidatorPlugln,之后设置了此类所需要的属性(pathnames),

此属性用于配置两个验证框架的支持文件,即validator-rules.xml和validation.xml,这两个文件都保存在WEB-INF文件夹中。


validator-rules.xml文件中定义的主要规则

NO.规则标记错误key描述
1requirederrors.required被验证的字段不能为空
2minlengtherrors.minlength被验证的字段的最小长度
3maxlengtherrors.maxlength被验证的字段的最大长度
4integererrors.integer被验证的字段必须是整数
5doubleerrors.float被验证的字段必须是小数
6dateerrors.date被验证的字段必须是日期型,需要通过datePaternStrict设置日期模板
7emailerrors.email被验证的字段必须是email格式
8urlerrors.url被验证的字段必须是url格式

例:定义了一个validation.xml文件,用于验证用户输入的ID、年龄、生日、email是否正确。

编写validation.xml文件---/WEB-INF/validation.xml

<!DOCTYPE form-validation PUBLIC
        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
        "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">


<form-validation>
	<formset>
		<form name="memberForm">
			<field property="mid"
				depends="maxlength,minlength,required">
				<var>
					<var-name>maxlength</var-name>
					<var-value>15</var-value>
				</var>
				<var>
					<var-name>minlength</var-name>
					<var-value>6</var-value>
				</var>
				<arg key="err.mid" resource="true" />
				<arg name="minlength" key="${var:minlength}"
					resource="false" position="1" />
				<arg name="minlength" key="${var:maxlength}"
					resource="false" position="2" />
				<arg name="maxlength" key="${var:minlength}"
					resource="false" position="1" />
				<arg name="maxlength" key="${var:maxlength}"
					resource="false" position="2" />
			</field>
			<field property="age" depends="required,integer">
				<arg key="err.age" resource="true" />
			</field>
			<field property="birthday" depends="required,date">
				<arg key="err.birthday" resource="true" />
				<var>
					<var-name>datePatternStrict</var-name>
					<var-value>yyyy-MM-dd</var-value>
				</var>
			</field>
			<field property="email" depends="required,email">
				<arg key="err.email" resource="true" />
			</field>
		</form>
	</formset>
</form-validation>
本配置通过<field>节点分别为mid、age、birthday和email4个属性进行了验证规则的配置,所有的属性都必须填写,而且在mid处设置了其长度范围为6~15位,age必须是数字,date通过datePatternStrict指定了一个验证的模板,email通过email格式的验证规则进行验证。在每一个<field>节点中都配置了一个<agr>元素,用于从资源文件(ApplicationResource.properties)中取出资源信息,例如,mid的<arg>如下:

<arg key="key.mid" resource="true" />

此配置中的两个属性介绍如下:

key:表示从ApplicationResource.properties文件中读取信息,并且通过资源文件中的占位符进行内容设置。
resource:为true表示使用资源文件。

编写ApplicationResource.properties文件

#用户ID
err.mid = \u7528\u6237ID
#用户年龄
err.age = \u7528\u6237\u5e74\u9f84
#生日
err.birthday = \u751f\u65e5
#邮箱
err.email = \u90ae\u7bb1
#{0}不能为空!
errors.required = {0}\u4e0d\u80fd\u4e3a\u7a7a\uff01
#{0}必须是数字
errors.integer = {0}\u5fc5\u987b\u662f\u6570\u5b57\uff01
#{0}格式不正确!
errors.date = {0}\u683c\u5f0f\u4e0d\u6b63\u786e\uff01
#邮箱格式不正确
errors.email = \u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e\uff01

errors.minlength = \u7528\u6237ID\u7684\u8303\u56f4\u662f{0} ~ {1}\u957f\u5ea6
errors.maxlength = \u7528\u6237ID\u7684\u8303\u56f4\u662f{0} ~ {1}\u957f\u5ea6


定义MemberAction,输出表单参数----MemeberAction.java

package org.lxh.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.validator.DynaValidatorForm;

public class MemberAction extends DispatchAction {

	public ActionForward insert(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		DynaValidatorForm memberForm = (DynaValidatorForm) form;// TODO Auto-generated method stub
		System.out.println("ID --> " + memberForm.getString("mid"));
		System.out.println("AGE --> " + memberForm.get("age"));
		System.out.println("BIRTHDAY --> " + memberForm.getString("birthday"));
		System.out.println("EMAIL --> " + memberForm.getString("email"));
		return null;
	}
}


修改struts-config.xml文件,增加DynaValidatorForm的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">


<struts-config>
<span style="white-space:pre">	</span><form-beans>
<span style="white-space:pre">		</span><form-bean name="memberForm"
<span style="white-space:pre">			</span>type="org.apache.struts.validator.DynaValidatorForm">
<span style="white-space:pre">			</span><form-property name="mid" type="java.lang.String"></form-property>
<span style="white-space:pre">			</span><form-property name="age" type="java.lang.Integer"></form-property>
<span style="white-space:pre">			</span><form-property name="birthday" type="java.lang.String"></form-property>
<span style="white-space:pre">			</span><form-property name="email" type="java.lang.String"></form-property>
<span style="white-space:pre">		</span></form-bean>
<span style="white-space:pre">	</span></form-beans>
<span style="white-space:pre">	</span><global-exceptions />
<span style="white-space:pre">	</span><global-forwards />
<span style="white-space:pre">	</span><action-mappings>
<span style="white-space:pre">		</span><action attribute="memberForm" name="memberForm"
<span style="white-space:pre">			</span>parameter="status" path="/member" scope="request"
<span style="white-space:pre">			</span>type="org.lxh.struts.action.MemberAction" validate="true" />
<span style="white-space:pre">	</span></action-mappings>


<span style="white-space:pre">	</span><message-resources parameter="org.lxh.struts.ApplicationResources" />
<span style="white-space:pre">	</span><plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<span style="white-space:pre">		</span><set-property property="pathnames"
<span style="white-space:pre">			</span>value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
<span style="white-space:pre">	</span></plug-in>
</struts-config>

编写JSP文件,使用验证框架----member.jsp

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<html:html lang="true">
<head>
	<html:base />
	<title>hello.jsp</title>
</head>
<body>
	<html:errors/>
	<html:form action="member.do" method="post" οnsubmit="return validateMemberForm(this)">
		ID:<html:text property="mid"/><br>
		年龄:<html:text property="age"/><br>
		生日:<html:text property="birthday"/><br>
		邮箱:<html:text property="email"/><br>
		<html:hidden property="status" value="insert"/>
		<html:submit value="提交"></html:submit>
		<html:reset value="重置"></html:reset>
	</html:form>
	<html:javascript formName="memberForm"/>
</body>
</html:html>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值