验证框架(Struts)

来源:互联网 发布:matlab 2014a for mac 编辑:程序博客网 时间:2024/05/21 06:56

在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文件

#用户IDerr.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\uff01errors.minlength = \u7528\u6237ID\u7684\u8303\u56f4\u662f{0} ~ {1}\u957f\u5ea6errors.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 stubSystem.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" onsubmit="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
原创粉丝点击