validator框架总结

Hibernate-validator校验框架 该验证框架是在Hibernate-validator的基础上进行封装而成,方便后台的接口验证 阅读详情

validator框架总结

validator框架能够克服在ActionForm Bean中以编程方式进行数据验证的局限,它允许Struts应用灵活的配置验证规则,无需编程。

Validator框架主要依赖两个JAR文件:jakarta-oro.jar和commons-validator,.jar

Validator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rules.xml和validation.xml。

 

1.     struts调用validator框架的过程:

struts-config.xml 文件中配置struts的validator插件

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

<set-property property="pathnames"

value="/WEB-INF/validator-rules.xml,                                      /WEB-INF/validation.xml"/>

 </plug-in>

容器启动时,ActionServlet调用插件ValidatorPlugIn的init方法。

init方法首先调用initResources方法,此方法通过读取参数pathnames取得值value并分析这两个xml文件,返回validatorResources对象。然后将这个对象保存进application作用域。

 

public void init(ActionServlet servlet, ModuleConfig config)

        throws ServletException {

        ......

        try {

            this.initResources();

 

            servlet.getServletContext().setAttribute(VALIDATOR_KEY

                + config.getPrefix(), resources);

           .....

 

          

        } catch (Exception e) {

           ......

        }

当服务器接受请求,它会调用ValidatorForm类的validate方法进行表单验证。

ValidatorForm的validate方法中调用Resources.InitValidator方法初始化Validator对象,并调用setParamter方法为校验方法传递参数,最后调用validator.validate()方法执行校验。

public ActionErrors validate(ActionMapping mapping,

        HttpServletRequest request) {

       ......

        String validationKey = getValidationKey(mapping, request);

        //返回Validator对象

        Validator validator =

            Resources.initValidator(validationKey, this, application, request,                errors, page);

 

        try {

            validatorResults = validator.validate();

        } catch (ValidatorException e) {

          ......

        }

 

        return errors;

}

public static Validator initValidator(......){

......

ValidatorResources resources =

            Resources.getValidatorResources(application, request);

//通过rources和formbean的名字得到Validator对象。

               Validator validator = new Validator(resources, key);

validator.setParameter(SERVLET_CONTEXT_PARAM, application);

        validator.setParameter(HTTP_SERVLET_REQUEST_PARAM, request);

        validator.setParameter(Validator.LOCALE_PARAM, locale);

        validator.setParameter(ACTION_MESSAGES_PARAM, errors);

        validator.setParameter(Validator.BEAN_PARAM, bean);

......

}

public String getValidationKey(ActionMapping mapping,

        HttpServletRequest request) {

        return mapping.getAttribute();

}

 

这里:getValidationKey返回struts-config.xml中action元素的attribute属性的值,它对应Form的name属性的值,表示要对哪个formbean进行校验。

<form name="regUserForm">

        <field property="name" depends="required">

        。。。

        </field>

 

        

validator的validate()方法调用Form,Field对象(根据配置文件实例化对象)的validate方法分别进行校验,返回一个ValidatorResults对象。ValidatorResults对象包含所有校验的结果。

 

 

2.如何扩展自己的校验器。

package com.wll.util;

 

import java.io.Serializable;

 

import javax.servlet.http.HttpServletRequest;

 

import org.apache.commons.validator.Field;

import org.apache.commons.validator.GenericValidator;

import org.apache.commons.validator.Validator;

import org.apache.commons.validator.ValidatorAction;

import org.apache.commons.validator.util.ValidatorUtils;

import org.apache.struts.action.ActionMessages;

import org.apache.struts.validator.Resources;

 

public class MyFieldChecks implements Serializable {

 

     

        public static boolean validateIdCard(Object bean,

                ValidatorAction va, Field field,

                ActionMessages errors,

                Validator validator,

                HttpServletRequest request) {

 

        String value = null;

 

           value = ValidatorUtils.getValueAsString(bean, field.getProperty());

           if (value.length()!=15 || !isDigits(value)){

              errors.add(field.getKey(), Resources.getActionMessage(validator, request, va, field));         

              return false;

           }

              return true;

       }

 

       private static boolean isDigits(String value) {

           // TODO Auto-generated method stub

           int len = value.length();

           for(int i=0;i<len;i++)

           {  

              if(!Character.isDigit(value.charAt(i)))

              return false;

           }

           return true;

       }

     

 

}

 

配置如下:

validation.xml

<form name="creditCard">

        <field property="card" depends="cardRequired">

        <arg key="prompt.card"/>

        </field>

</form>

validator-rules.xml

<validator name="cardRequired"

            classname=" com.wll.util.MyFieldChecks"

               method=" validateIdCard "

         methodParams="java.lang.Object,

                       org.apache.commons.validator.ValidatorAction,

                       org.apache.commons.validator.Field,

                       org.apache.struts.action.ActionMessages,

                       org.apache.commons.validator.Validator,

                       javax.servlet.http.HttpServletRequest"

                  msg="errors.card"/>

资源文件中

errors.card={0} is not valid.

prompt.card=creditcard

 

基于C#的软PLC梯形图编辑器开发实战 本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。 阅读详情

相关推荐

C++五子棋人机对战

使用C++,开发五子棋人机对战,快速提升C++项目开发能力。

程序员Rock的博客 5万+

关于validator验证器操作

关于validator验证器操作如以下: 在springServlet.xml配置如下操作   class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean ">   ---------------------------------------------------

MR_FENGG的博客 1523

二维码扫描与页面跳转的完整流程解析

本文详细解析了二维码扫描与页面跳转的完整流程,从核心原理到前后端实现,涵盖了二维码生成、扫码事件处理、后端验证机制及跳转逻辑等关键环节。特别介绍了如何使用qrcode.js生成二维码、WebSocket处理扫码状态以及JWT令牌验证设计,帮助开发者构建安全高效的扫码跳转系统。

cicd6pipeline的博客 1089

如何进行数据验证(validator)

Angular 中有两种表单: Template-Driven Forms - 模板驱动式表单 (类似于 AngularJS 1.x 中的表单 ) Reactive Forms - 响应式表单 我们主要使用响应式表单来进行validator方法验证 首先在 @NgModule 中导入 @angular/forms 库中的 ReactiveFormsModule: app.module.ts import { ReactiveFormsModule } from '@angu

m0_65503310的博客 3367

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 257

配电网可靠性评估(一)—最小路法和非序贯蒙特卡洛模拟法的matlab实现

电力系统的可靠性研究是相关领域的热点问题。根据研究对象的不同,又可分为发电系统的可靠性,输电系统的可靠性和配电系统的可靠性。配电网在电力系统中处于最末端的位置,直接和用户相连,一旦出现故障情况,就会在用户侧表现为停电事故。因此对配电网的可靠性评估有着重大意义。......

配电网和matlab的博客 1万+

Validator验证框架

struts学习笔记]Validator验证框架 小结:struts中应用validator框架的一般步骤(结合实例) 1 创建扩展ValidatorForm或者ValidatorActionForm类的ActionForm类,如果使用动态的ActionForm类,则无需创建扩展DynaValidatorForm或DynaValidatorActionForm类的子类,可直接进行第2步。 eg:r

Ba_Jin_Zhi的专栏 717

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 933

开发服务端校验组件——validator

hibernate-validator介绍 早期的网站,用户输入一个邮箱地址,需要将邮箱地址发送到服务端,服务端进行校验,校验成功后,给前端一个响应。 有了JavaScript后,校验工作可以放在前端去执行。那么为什么还需要服务端校验呢? 因为前端传来的数据不可信。前端很容易获取到后端的接口,如果有人直接调用接口,就可能会出现非法数据,所以服务端也要数据校验。 总的来说: 前端校验:主要是提高用户体验 后端校验:主要是保证数据安全可靠 校验参数基本上是一个体力活,而且冗余代码繁多,

m0_52322439的博客 701

机器人视觉联动精度优化:从±2mm到±0.02mm,产线级手眼标定全实战

2025年我接东莞长安Type-C接口分拣项目的时候,就是栽在了手眼标定上:实验室里标定完精度±0.5mm,一到产线直接掉到±2mm,机器人10次有3次抓不住,2000多件Type-C接口直接报废,还撞坏了2套汇川SCARA机器人的吸盘,本来45天的工期拖了3个月,不仅没赚到钱,还倒贴了几万块。手眼标定从来不是简单的跑个demo、算个矩阵就完事了,它是一个系统工程:从硬件选型、安装固定、相机标定、标定流程、算法优化、环境控制、重复验证,每一个环节都会影响最终的联动精度。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 389

大厂硬件机试选择题与判断题解析-卷1

本文精选30道硬件工程师机试题目,涵盖模拟电路、数字电路、PCB设计三大方向。模拟电路部分重点考察运算放大器、滤波器、整流电路等核心知识;数字电路部分聚焦计数器、电平转换等关键技术;PCB设计部分强调高速信号处理、阻抗控制等实践要点。题目均来自华为、小米等大厂真题,剔除基础题,每道题附详细解析,包括正确答案推导过程及相关公式说明。特别针对易错概念(如负反馈类型判断、Q值与带宽关系等)进行重点解析,帮助考生系统掌握硬件设计的核心考点和解题思路。

启芯硬件的博客 679

用vue写轮子的一些心得(七)——validator表单校验组件

需求分析 支持内置校验器,比如:邮箱校验、手机号校验等等; 支持自定义校验器; 支持自定义校验器,并不会造成全局污染,每次new一个新实例; 方法实现 1、表单校验基础搭建: 校验器组件逻辑,首先校验必填项,required: true 是否必填,若无填写则直接return报错「必填」。 接着再校验其它内置规则,email、手机号等等。 export default function validate (data, rules) { let errors = {} ...

阿嚏乱码的地方 966

AutoSAR配置视频讲解:新建DaVinci工程

AutoSAR实验视频讲解:闪烁一颗LED实验【新建DaVinci工程】 上一篇 | 下一篇 | 总目录 实验架构图 视频本频放在了文末,下图描述了本次实验配置内容在AutoSAR架构中的位置,供大家参考 实验内容 本节课程讲解新建DaVinci工程,听上去新建工程很简单,但是还是需要很多的准备工作和细节。主要内容是新建工程和导入dbc文件和导入arxml文件的方法 主要步骤 新建DaVinci工程 导入.dbc通信矩阵文件 导入Mcal的arxml文件 实验视频2:Mcal配置 提示:版权所在,违

雪云飞星的博客 6276

重构Validator框架

 重构Validator框架 由于之前已经对validataor进行修改,并应用于项目中,随着时间的推移发现了一些问题,故重新对validator进行一次重构。 做web开发少不了用js来做校验。数据校验是保证软件系统正常运行的重要组成部分,尤其是保证数据的合法性,正确性、完整性、可计算性。Web层处于软件系统的最前端,接受最原始的数据输入。因此,web层的数据校验显得非常重要

chenfuzhong的专栏 3596

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Struts Validator验证框架

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

Tom Studio (汤姆工作室) 914

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

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

在struts中使用Validator框架

 在struts中使用Validator框架 Validator验证框架Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架。Validator主要依赖两个jar包Jakarta-or

Materials gathered 478

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

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

java validator 框架_如何使用Validator框架

展开全部Validator框架是一个独立的32313133353236313431303231363533e4b893e5b19e31333337376337Validation Framework,目前在Struts1.1中可以一起打包下载。作为Apache Commom的一个OpenSource,它可以和Struts一起结合使用,也可以和其他非Web应用中使用。前段时间利用Eclipse3.0...

weixin_39670267的博客 347

Struts的validator框架验证

        经过为期近两个月的项目练习,了解了开发一个实际项目它的具体流程及在每一个阶段都做哪些工作。在技术上进一步一步熟悉了Struts框架中的相关内容。在这里我想谈一下有关Validator框架验证和Struts标签的相关内容。1.        Validator验证框架Validator框架验证已经克服在ActionForm Bean的validate()方法中写验规则

技术交流 991

使用Validator做SpringMVC的验证框架 - 使用Validator

前面一章我们已经搭好SpringMVC的环境了。现在开始学习Validator框架的使用吧 Validator框架源码地址:https://github.com/devefx/validator 1 - Validator框架的下载和安装我们经常可以看到类似登录、注册、修改信息这种网页, 这种页面我们在平常的开发中需要对用户提交的表单数据进行验证并错误提醒,同时为了减轻服务器压力和安全性,都需

devefx的博客 9275

validator框架 validate方法

validator框架 validate方法 ActionForm/ValidatorForm/ValidatorActionForm struts 1.3为例validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm不同点:(1).继承自ActionForm的FormBean,必须覆基类ActionForm的

chenxiaomingit的专栏 4910

在Struts中使用Validator验证框架详解

 Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架。 Validator主要依赖两个jar包 Jakarta-oro.jar:-提供一组处理文本的类,具有文本替换、过滤、和分割功能。 Commons-validator.jar:提

logicbiz的专栏 816

在Struts中使用Validator框架

在Struts中使用Validator框架      每个应用程序都有责任确保它们插入到后台资料库的数据是合法有效的,毕竟,如果这些应用程序所依赖的数据一旦遭到了破坏,那将是灾难性的,那应用程序还能拿什么来使自己正常运转呢?比如说,使用正规关系数据库的一个应用程序,数据库中的每个字段都有自己一定的规则和约束,来保证存储在其中的数据在一定程度上的正确性。任何要使用后台资料库数据的应用程序都有责任保护

sumongh我们在一起 738

10. Validator验证框架入门

http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/nokiaguy/archive/2009/02/12/254421.html本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:Struts1.x系列教程(9):上传任意多个文件 Struts2教程4:使用validate方法验证数据 St...

qingfengxia2013的专栏 139
上一篇: 数字转换为大写金额
firstjava
博客等级 码龄18年 26粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值