struts1 validator验证框架

struts1 validator验证框架

MyEclipse

本文以一登录页面(Login.jsp)为例,讲叙我在JBuilder 2005中如果使用Validator框架来对输入的数据进行验证。
   在用户进行主页面前需要进行身份验证,此页面的验证规则为用户名和密码均不能为空,且密码的长度必须大于等于6个字符。

为了达到以上所说的目的,在Struts中有两种办法:
        1.使用ActionForm Bean中的Validate()函数实现,将需要验证的逻辑写入该函数,即在提交表单时会对其进行验证,这中方法的缺点在于必须通过程序代码来实现验证逻辑,如果验证逻辑发生改变,则必重新编写和编译程序代码,此外如果程序中多个ActionFrom Bean共用相同的验证逻辑,则必须重复编程,降低代码的重用性。
        2.使用Validator验证框架实现,它能够克服以上所说的局限,此外它的配置灵活,无需编程。

  Validator框架采用两个基于XML的配置文件来配置验证规则,这两个文件为validator-rules.xml和validation.xml,在Struts应用中,这两个文件必须存放在WEB-INF目录下。

  下面从页面开始讲述如果创建此登录验证页面。
Login.jsp页面的关键代码如下:
        <tr>
          <td width="70" class="TableText">用户名:</td>
          <td>
            <html:text property="userName" style="TextBoxLong">    </html:text>
           <html:errors property="userName" />
          </td>
        </tr>
        <tr>
          <td class="TableText">密 码:</td>
          <td>
            <html:password property="password" style="TextBoxLong">   </html:password>
           <html:errors property="password"/>
          </td>
         </tr>
  说明:
        1.用户名文本框的属性名称为userName,对应其ActionFrom中的userName,接下来为显示错误的Struts标签,其属性名称与文本框同名,意为只显示文本框的错误信息,如果没有property,则显示所有错误信息,此标签的作用是一但用户名文本框有错误则通过其进行显示。
        2.密码框与用户名文本框基本类似,在此不再叙述。

Login页面创建完成后,即需要创建ActionFrom Bean,名称为LoginActionForm
        import javax.servlet.http.*;
        import org.apache.struts.action.*;
        import org.apache.struts.validator.*;

        public class LoginActionForm extends ValidatorForm {
            private String password;
            private String userName;
            private Integer id;
            public String getPassword() {
                return password;
            }

            public void setPassword(String password) {
                this.password = password;
            }

            public void setUserName(String userName) {
                this.userName = userName;
            }

           public void setId(Integer id) {
                this.id = id;
            }

            public String getUserName() {
                return userName;
            }

            public Integer getId() {
                return id;
            }

           public void reset(ActionMapping actionMapping,
                              HttpServletRequest servletRequest) {
                password = null;
                userName = null;
            }
        }
  说明:
        1.此处的LoginActionForm必须继承自ValidatorForm,而不是ActionForm,原因在于ActionForm不能使用Validator框架完成验证。
        2.此LoginActionForm中必须包含有Login.jsp页面中<html:text/>和<html:password/>标签propety属性所指定的属性字段名,即userName和password.
        3.除以上所说外,该LoginActionForm就是一个JavaBean类。

定义Action--LoginAction
  此Action与普通的Action并无任何区别,均是完成相应的后台逻辑功能,此页面则是读取数据库中的数据与输入的相比较,匹配则转向主页面,否则转向错误页面,具体实现在此就不叙述了。


创建validator-rules.xml文件,制定验证规则
        <!DOCTYPE form-validation PUBLIC
                  "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
                  "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd ">

        <form-validation>
           <global>
              <validator name="required"
                    classname="org.apache.struts.validator.FieldChecks"
                    method="validateRequired"
                    methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       javax.servlet.http.HttpServletRequest"
                   msg="errors.required">
              </validator>
         
              <validator name="minlength"
                  classname="org.apache.struts.validator.FieldChecks"
                  method="validateMinLength"
                  methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.minlength">
                 depends="required"
            </validator>
           </global>
        </form-validation>
  说明:
        1.每个<validator>元素定义了一个惟一的验证规则,此处一共定义了两个验证规则:名为required的规则和名为minlength的规则。
        2.<validator>元素的name属性指定验证规则的逻辑名,此名字必须惟一;classname和method属性分别指定实现验证规则逻辑的类和方法;methodParams属性用来指定验证方法包含的参数,多个参数之间用逗号隔开;msg属性指定来自于Resource Bundle中的消息key,此程序的Resource Bundle为ApplicationResources.properties文件,当验证失败时,Validator框架将根据这个消息key到Resource Bundle中查找匹配的消息文本,默认情况下,Validator框架有一组定义的消息文本,参见下文“定义Resource Bundle消息文件”,此处的消息也可以自定义,而不使用其默认消息。
        3.除上述的属性外,<validator>还有一个depends属性,用于指定在调用当前验证规则之前必须先调用的其他验证规则,例如上面代码中在调用minlength验证前需先调用required验证规则。如果depends包含多个验证,使用逗号分隔,如depends="required, maxlength",需注意的是如果调用depends规则时验证失败,则不会调用下一个验证规则。
        4.下面给出FieldChecks类包含的验证方法,即method后可以写的方法(上面代码中蓝色显示),此外,可以自定义方法。
                validateByte、validateCreditCard、validateDate、validateDouble、validateEmail、validateFloat、validateInteger、validateLong、validateMask、validateMinLength、validateMaxLength、validateRange、validateRquired、validateShort。

创建validation.xml文件,此文件可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
        <?xml version="1.0" encoding="ISO-8859-1" ?>
        <!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd ">
        <form-validation>
          <formset language="zh_CN">
            <form name="LoginActionForm">
              <field property="userName" depends="required">
                <arg0 name="required" key="User.name" resource="true"/> ==> <msg name="required" key="user.required" resource="true"/>
              </field>
              <field property="password" depends="required,minlength">
                <arg0 key="password.name" />
                <arg1 name="minlength" key="${var:minlength}"/>
                <var>
                  <var-name>minlength</var-name>
                  <var-value>6</var-value>
                </var>
              </field>
            </form>
          </formset>
        </form-validation>
  说明:
        1.<form>元素用于为表单配置验证规则,它的name属性为需要验证的ActionForm的名称,它需要与struts-config.xml中的名称一致,如此处为LoginActionForm.
        2.<field>元素用于为表单字段配置验证规则,它的property属性名称需要与Login.jsp页面中的用户名文本框和密码框的property属性名一致。
        3.<depends>元素为该字段所采用的验证规则有哪些,如果有多个,则使用逗号分隔。
        4.参看以上<msg>一行,<msg>元素指定验证规则对应的消息文本,该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认消息文本。意思即是说,如果上面使用的是<msg name="required" key="user.required" resource="true"/>,而非<arg0 name="required" key="User.name" resource="true"/>,则如果验证失败,验证规则将使用msg中key指定的消息,而非默认的errors.required消息(validator-rules.xml中定义,参看上文)。
        5.<field>字段可以包含四个附加的子元素,<arg0>、<arg1>、<arg2>、<arg3>,用于替换复合消息中的参数,<arg0>指定第一个替换值,<arg1>指定第二个,依此类推。每个arg元素包含三个属性:name,key和resource,用法与<msg>相似。如上代码中<arg0 name="required" key="User.name" resource="true"/>意为使用从消息文件ApplicationResources.properties中消息key User.name取出的文本(Username)来替换默许消息文本errors.required中的参数,使之组合成一句有意思的文本,errors.required的原文本为:{0}is requuired.

向struts-config.xml中添加validate属性,使相应字段开启验证过程,并配置validator-rules.xml和validation.xml,使之起作用。
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd ">
        <struts-config>
          <form-beans>
            <form-bean name="LoginActionForm" type="personal.system.Login.struts.actionform.LoginActionForm" />
          </form-beans>
          <action-mappings>
            <action input="/JSP/Login.jsp" name="LoginActionForm" path="/LoginAction" scope="request" type="personal.system.Login.struts.action.LoginAction" validate="true">
              <forward name="succeed" path="/JSP/index.jsp" />
              <forward name="failed" path="/JSP/Failed.jsp" />
            </action>
          </action-mappings>
          <message-resources parameter="ApplicationResources" />             ==>指定消息资料文件(Resource Bundle)的文件名,此处全名文件名即为ApplicationResources.properties
          <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
         </plug-in>
        </struts-config>

定义Resource Bundle消息文件--ApplicationResources.properties
           password.name=Password              ==>定义参数值,password字段使用:<arg0 key="password.name" />
           User.name=Username                 ==>定义参数值,username字段使用:<arg0 name="required" key="User.name" resource="true"/>
   
           ##以下均为Validator框架的默认消息文本,其中的{0},{1},{2}...代表传入参数的取代位置。
           errors.required=<font color="red">{0} is required.</font>
           errors.minlength=<font color="red">{0} can not be less than {1} characters.</font>
           errors.maxlength=<font color="red">{0} can not be greater than {1} characters.</font>
           errors.invalid=<font color="red">{0} is invalid.</font>

           errors.byte=<font color="red">{0} must be a byte.</font>
           errors.short=<font color="red">{0} must be a short.</font>
           errors.integer=<font color="red">{0} must be an integer.</font>
           errors.long=<font color="red">{0} must be a long.</font>
           errors.float=<font color="red">{0} must be a float.</font>
           errors.double=<font color="red">{0} must be a double.</font>

           errors.date=<font color="red">{0} is not a date.</font>
           errors.range=<font color="red">{0} is not in the range {1} through {2}.</font>
           errors.creditcard=<font color="red">{0} is an invalid credit card number.</font>
           errors.email=<font color="red">{0} is an invalid e-mail address.</font>

struts1.x validator框架验证入门例子 validator框架验证入门例子 struts1.x validator框架验证入门例子 立即下载

相关推荐

Struts1.x的验证框架示例

Struts1.x的验证框架示例 Struts1的验证框架并不常用,提供一个示例仅做参考

Struts 1 Validator框架学习笔记

为什么在没有Validator之前,用Actionform的validate()方法去验证用户输入的数据的方式不好?1. The Validator framework comesprepackaged with several validation routines, making the transition fromhard-coded validation logic

Kevin的专栏 886

struts中使用validator验证框架

struts中使用validator框架由简单到复杂的三个实例,附加说明。

struts中validator框架简单使用实例

struts中validator框架简单使用实例 本文以一登录页面(Login.jsp)为例,讲叙我在JBuilder 2005中如果使用Validator框架来对输入的数据进行验证。 如下图1所示,在用户进行主页面前需要进行身份验证,此页面的验证规则为用户名和密码均不能为空,且密码的长度必须大于等于6个字符。 为了达到以上所说的目的,在Struts中有两种办法: 1.使用

司空不见的专栏 571

三分钟解决RKNN-Toolkit2安装失败:从模块报错到成功验证的完整记录

本文详细记录了RKNN-Toolkit2安装失败的解决方案,从环境配置到模型转换实战,特别针对常见的'No module named 'rknn''报错提供了完整修复指南。通过YOLOv8模型转换示例,展示了从ONNX到RKNN格式的完整流程,并分享了在RK3588芯片上的部署优化技巧。

html8的博客 264

Maven

是一款自动化构建工具,专注于Java项目的构建、依赖的管理。

weixin_58738870的博客 2163

struts2 validator 详细小结

<br /><br />前面讲到了一种验证方法,是在Action的 validate方法中通过代码的方式来完成的。而struts2提供了另外一种 方式来实现输入验证。<br />这种方式就是使用validate框架来实现输入校验,这种方式是基于XML的验证。<br />文件名为XXXAction-validation.xml。<br />那么校验xml文件格式该如何写呢?<br />可以使用firefox查看此xml的DTD定义,地址为 http://www.opensymphony.com/xwork/x

蛰伏神兽的专栏 2531

不止于算力:深入鲲鹏920的片上网络(NoC)与一致性协议HCCS,看华为如何优化数据流转

本文深入解析了鲲鹏920处理器的片上网络(NoC)架构和一致性协议HCCS,揭示了华为如何通过创新的环总线设计和私有协议优化数据流转效率。文章详细介绍了鲲鹏920在多die、多芯片环境下的高效协同机制,包括环总线架构、HCCS协议精妙设计及物理实现创新,为云服务场景提供了高性能解决方案。

weixin_30681121的博客 251

在Struts中使用Validator实现可配置的信息校验(一)

在Struts中对用户输入信息的校验一般在FromBean中进行(除非需要访问数据库进行诸如登录信息的校验,因为这是Action的工作),本文将阐述如何在Struts中实现可配置的信息校验。 一、在FormBean中手工实现 最简单的方法是直接在FormBean中重写ActionForm类的validate方法,validate方法签名如下: public ActionErrors valida...

mustangxu的博客 182

OpenAI Realtime API实时语音交互实战指南

实时语音交互是人机自然对话的核心能力,其本质在于构建低延迟、双向、流式协同的音频-语义闭环。它突破传统REST API的请求-响应范式,依托WebSocket实现毫秒级音频输入流(audio.delta)、模型生成流(text/audio.delta)与动态控制流(session.update)三重并行。该技术显著降低端到端延迟至300ms以内,支撑语音助手、智能客服、对话式教育等强实时场景。本文聚焦OpenAI Realtime API的工程落地,详解PCM音频流处理、VAD语音活动检测、AudioCon

weixin_32285357的博客 393

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6259

Struts 1 Validator 学习笔记

为什么在没有Validator之前,用Actionform的validate()方法去验证用户输入的数据的方式不好?1. The Validator framework comesprepackaged with several validation routines, making the transition fromhard-coded validation logic

Kevin的专栏 934

Fluent动网格+滑移网格+重叠网格对比介绍(以震荡水翼flapping foil为例)

初学fluent笔记,本文主要包含: Flapping foil在fluent内的几种实现方式 在哪设置动网格、滑移、重叠网格 flapping的UDF 示例 写在前面:Fluent在预览网格运动/提交计算之前,注意保存一个cas版本。 -------------------------Flapping foil 网格几种组合实现方式:---------------------- 直接重叠网格,overset, 需要建立两个几何part,part要重合。水翼局部区域(component),背景网格(ba

深海民工CFDer 2万+

struts1.2的Validator验证框架使用

 在Struts1.2中使用Validator验证框架      Validator采用基于两个xml文件的方式来配置验证规则,分别为validation.xml,validator-rules.xml。在struts应用中,需放到web-inf目录下。1.validator-rules.xml  这个文件包含了一组验证规则,对所有struts应用都适用。一般情况不用修改这个文件,除非要修改或

sukyle的专栏 2132

uniapp ios原生插件开发 (framework,cocoapods)

已知UniApp的插件开发方式有两种, 第一种 Xcode Framework的方式,这种方式是官方指定的方式。 这种方式的优点就是简单直接, 但也有不足,比如当插件需要引入一些三方库时,操作起来就不是那么方便。 而使用Cocoapods则可以很方便的引入三方库。 接下来,本文探索使用Cocoapods的方式来进行UniApp插件开发。

Rey的技术博客 9823

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件,或者是批量更改数量,还是组件里面的一些标识,当处理这些批量数据处理的业务时,BOM的批量更改一个想到的就是CS20,但是CS20当BOM需要替换的时候就不是很适用。当前工作区域:选择 SAP_ITEM 对BOM行项目进行变更,工艺路线也是可以批量更改的,根据实际的业务进行选择,我这里选择的就是BOM的组件变更。5、本博客将使用新的一种方式进行BOM的批量变更,标准的事务代码:CEWB对BOM进行批量更改。3、使用LSMW的方式进行BOM的批量更改。

我小时候很黑的博客 4094

Struts1.x系列教程(12):Validator验证框架的内置标准验证

http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/14/254688.html本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Struts1.x系列教程(11):...

qingfengxia2013的专栏 115

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Struts1.x系列教程(11):Validator验证框架高级应用

在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问。如我们可以通过设置元素的property属性值

scoredevil的专栏 511

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

struts的数据验证[2 Struts Validator验证框架1]

Validator验证框架Validator框架能够克服在ActionForm Bean中以编程方式进行数据验证的局限,它允许Struts应用灵活的配置验证规则,无需编程。Validator框架主要依赖两个JAR文件:jakarta-oro.jar和commons-validator,.jarValidator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validato

万物得其本者生,百事得其道者成 922

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Struts 1.x | validator 动态验证框架

 Struts validator 动态验证框架   1) struts数据的检验分成客户端检验与服务器检验。客户端检验是避免用户输入非法的的数据 , 而服务器端检验通常是把      用户输入的正确数据与数据库的数据进行对比,然后依然业务逻辑进行检验 2) 如果要进行服务器端检验可以在Action中进行,如果要进行客户端检验则可以利用js或struts中的commons-validato...

ray 198

Struts1.x系列教程(11):Validator验证框架高档利用

<br />在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简略的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以应用圆点(.)符号来造访。如我们可以通过设置<field>元素的property属性值为“employee.salary”来验证employee属性中的salary属性。<br />    如果要验证的索引属性,我们可以应用 <field>元素的indexedListProperty属性来指

xu1314的专栏 689
上一篇: html:cancel按钮的作用,cancel按钮,取消按钮
下一篇: java class.getResource()方法获取文件资源
programloverjack
博客等级 码龄17年 5粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值