Struts校验器总结

struts验证器 struts验证器,可以使用 立即下载

基本说明:

Struts校验可以分为两种类型:Annotation型,XML配置型

    Annotation
型主要使用Annotation来配置Action中的属性,这里我们做过多的介绍,需要看的请参看我的其他相关文章。XML配置型主要是指,使用XML来描述配置信息,之后提供给Struts框架做校验。使用Struts2,XML配置型的校验可以使用三种方式:普通的
服务器端校验方式,客户纯JavaScript方式端校验,和Ajax方式的校验。

普通的
服务器端校验方式:

   
客户端提交信息到服务器,在服务器上使用XML配置信息,校验客户端提交的信息,错误的情况下,返回input页面,显示校验错误信息。

客户端纯JavaScript校验方式:

   
在输入画面上,根据XML文件中的配置内容生成对应的JavaScript校验脚本,在提交数据的时候首先使用这些生成的JavaScript校验输入信息,错误情况下在画面上显示错误信息,不需要向服务器提交内容,只有输入数据校验正确的情况下才向服务器提交请求。这种方式的校验不支持所有Struts2内置的校验,只支持一部分校验:

required validator 
    requiredstring validator 
    stringlength validator 
    regex validator 
    email validator 
    url validator 
    int validator 
    double validator

<![CDATA[Number(form.elements['aepTemp.amount'].value.replace(/,/g, ''))<=0]]>

用正则表达式,把逗号换成空的,g代表全局,意思是把num里所有的逗号都去掉

 

校验框架(基于xml)
解决方案:
在action同一个包内建一个xml
命名规则:action名
-validation. xml
如果只对action中的一个方法校验则为:

action
名- 方法名-validation.xml

字段校验实例:
<?xml version="1.0" encoding="UTF-8"?>
//
拷贝自以往工程
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "
http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

        <validators>
       //requiredstring
代表字符串类型不能为空

 <field name="username">
  <field-validator type="requiredstring">
   <param name="trim">true</param>
   <message>username should not be blank!</message>
  </field-validator>
   //
定义字符串长度
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>username should be between ${minLength} and ${maxLength}</message>
  </field-validator>
 </field>

 <field name="password">
  <field-validator type="requiredstring">
   <message>password should not be blank!</message>
  </field-validator>
  
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>password should be between ${minLength} and ${maxLength}</message>
  </field-validator>
 </field>
 
字段OGNL表达式校验器

<field name="imagefile">

       <field-validator type="fieldexpression">

              <param name="expression"><![CDATA[imagefile.length() > 0]]></param>

              <message>文件不能为空</message>

       </field-validator>

</field>

email:邮件地址校验器

<field-validator type="email">

       <message>电子邮件地址无效</message>

</field-validator>

regex:正则表达式校验器

<field-validator type="regex">

     <param name="expression"><![CDATA[^13/d{9}$]]></param>

     <message>手机号格式不正确!</message>

</field-validator>


 <field name="repassword">
  <field-validator type="requiredstring">
   <message>repassword should not be blank!</message>
  </field-validator>
  
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>repassword should be between ${minLength} and ${maxLength}</message>
  </field-validator>
 </field>
 

 <field name="age">
         //
定义Int型大小范围

  <field-validator type="int">
   <param name="min">1</param>
   <param name="max">150</param>
   <message>age should be between ${min} and ${max}</message>
  </field-validator>
 </field>
 
 <field name="birthday">
                //
定义非字符串类型不能为空
  <field-validator type="required">
   <message>birthday should not be blank!</message>
  </field-validator>
  //
定义date类型范围
  <field-validator type="date">
   <param name="min">2001-01-01</param>
   <param name="max">2003-12-31</param>
   <message>birthday should be between ${min} and ${max}</message>
  </field-validator>
 </field>
 
 <field name="graduation">
  <field-validator type="required">
   <message>graduation should not be blank!</message>
  </field-validator>
  
  <field-validator type="date">
   <param name="min">2005-01-01</param>
   <param name="max">2007-12-31</param>
   <message>graduation should be between ${min} and ${max}</message>
  </field-validator>
 </field>
 

 
</validators>

非字段校验实例:

 <validator type="requiredstring">
  <param name="fieldName">username</param>
  <message>username should not be blank!</message>
 </validator>
 
 <validator type="stringlength">
  <param name="fieldName">username</param>
  <param name="minLength">6</param>
  <param name="maxLength">10</param>
  <message>username should be between ${minLength} and ${maxLength}</message>
 </validator>

 

Ajax方式校验

     在提交请求的时候,首先使用AJAX的方式将数据提交到服务器,在校验出错的情况下在页面显示错误信息,但是不刷新页面,在校验成功的情况下,才向服务器提交请求。

三种方式比较

 

普通的服务端校验方式

客户端纯JavaScript

Ajax方式

位置

服务器

客户端 

服务器

是否刷新页面

是

否

否

校验代码

Java

JavaScript

Java

具体实现

1 定义Action类

    Action.java

2 定义配置文件

 Action-validation.xml

3 在struts.xml中定义action,注意由于使用了validation,所以必须定义input名字的result。

    <action name="" class="">

   <result></result>

   <result name="input"></result>

    </action>

4 定义JSP页面的Form,例如:

<s:form action="quizAction" >

    <s:textfield label="Name" name="name"/>
    <s:textfield label="Age" name="age"/>
    <s:textfield label="Favorite color" name="answer"/>
    <s:submit/>

</s:form>

与“普通的服务端校验方式”基本相同,但是需要在form定义的时候添加validate="true",例如:

<s:form action="quizAction" validate="true">

    <s:textfield label="Name" name="name"/>
    <s:textfield label="Age" name="age"/>
    <s:textfield label="Favorite color" name="answer"/>
    <s:submit/>

</s:form>

与“普通的服务端校验方式”基本相同,但是需要做如下修改:

1 安装dojo plugin

2 JSP中使用dojo plugin

<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
3
在head内部追加head标签(引入dojo的js库)

 <sx:head />
4
修改form定义

<s:form method="post" theme="ajax"  action="quizAjax" id="form">
   
<s:textfield label="Name" name="name" />
   
<s:textfield label="Age" name="age" />
   
<s:textfield label="Favorite color" name="answer"/>
   
<sx:submit validate="true" />
</s:form>

说明:struts-dojo-plugin在2.1.0的时候可能会Release。现在使用需要从Subversion中去除2.1.0SNAPSHOT代码:

svn http://svn.apache.org/repos/asf/struts/struts2/trunk

代码示例

// QuizAction 类

package example;

import com.opensymphony.xwork2.ActionSupport;

/**

* Created by IntelliJ IDEA.

* User: ma.zhao@dl.cn

* Date: 2007-9-8

* Time: 13:58:16

* To change this template use File | Settings | File Templates.

*/

public class QuizAction extends ActionSupport {

private static final long serialVersionUID = -7505437345373234225L;

private String name;

private int age;

private String answer;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getAnswer() {

return answer;

}

public void setAnswer(String answer) {

this.answer = answer;

}

public String execute() {

return SUCCESS;

}

}

 

 

// QuizValidation.xml 校验配置文件

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

<validators>

    <field name="name">

        <field-validator type="requiredstring">

            <message>You must enter a name</message>

        </field-validator>

    </field>

    <field name="age">

        <field-validator type="int">

            <param name="min">13</param>

            <param name="max">19</param>

            <message>Only people ages 13 to 19 may take this quiz</message>

        </field-validator>

    </field>

</validators>

// struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="example" namespace="/example" extends="struts-default">

        <action name="quizAction" class="example.QuizAction">

            <result name="input">/example/quiz-ajax.jsp</result>

            <result>/example/quiz-success.jsp</result>

        </action>

    </package>

</struts>

 

// JSP 文件

<%--

  Created by IntelliJ IDEA.

User: ma.zhao@dl.cn

Date: 2007-9-8

  Time: 14:02:17

  To change this template use File | Settings | File Templates.

--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head><title>Quiz Action Validation</title></head>

<body>

<s:form action="quizAction" namespace="/example" validate="true">

    <s:textfield label="Name" name="name"/>

    <s:textfield label="Age" name="age"/>

    <s:textfield label="Favorite color" name="answer"/>

    <s:submit/>

</s:form>

</body>

</html>

 

特别说明(Ajax Validation):

为什么使用AJAX 校验?

    纯的JavaScript校验不刷新页面,但是也不能使用所有的Struts2校验方法;服务端校验可以使用所有Struts2的校验方法,但是需要刷新页面。

Struts2 Ajax校验,既不需要刷新页面,又可以使用Struts2内置的所有的校验方法,所以我们比较倾向于使用Ajax校验。

现在(2007/09/08)Struts2的最新版本为2.0.9,还不支持dojo-plugin,所以还没有办法使用Ajax校验。所以要想使用Ajax Validation必须使用Struts2.1.0 SNAPSHOT版本。

 

Struts2 校验器 NULL 博文链接:https://chaoyi.iteye.com/blog/2161948 立即下载

相关推荐

struts2校验器类型详解

struts2校验器类型详解 配合我的名称为 : Struts2总结-2 资源看

Struts2数据有效性的校验的两种方式,Struts2数据校验(案例+解析)

抽象validate方法:针对Action当中所有的方法。在这个方法当中可以编写校验代码。package com.itzheng.web.action.demo1;import com.opensymphony.xwork2.ActionSupport;/*数据的校验继承了ActionSupport之后才有一些功能:数据的校验,国际化,设置错误的信息!*/public class LoginAction1 extends ActionSupport{private String username;priva

2401_84046545的博客 1185

struts验证器validator使用,以及自定义验证器

该demo是struts验证器validator使用,以及struts基本配置,自定义创建struts的验证器,使用maven创建管理工程,使用eclipse编译器

Struts2校验器实现注册校验

一、场景用户名不能为空,长度为6-14位(第一位为大写字母,后面每一位为字母、数字、下划线)    ,用户名不能为admin、密码不能为空,密码长度为8-10位;密码和确认密码一致二、实现Userpublic class User { private String name; private String pass; private String repass; ...

孟林洁的博客 2489

Qt Location实战:5分钟搞定地图插件切换与卫星图源加载(附完整代码)

本文是Qt Location开发系列教程的实战指南,详细讲解如何在Qt应用中快速实现地图插件(如Esri、OSM、MapboxGL)的动态切换与卫星图源的加载。通过清晰的代码示例,帮助开发者理解插件机制,解决常见配置问题,并在5分钟内构建出具备交互式地图切换功能的应用程序。

kafka6courier的博客 524

Xilinx IP核 Block Memory Generator v8.4 的使用

本文主要介绍如何使用并初始化 Xilinx 提供的IP核 Block Memory Generator v8.4`,为了确保成功初始化,还对其进行了一个简单的仿真,更多细节请参考官方手册。

高阶近似的博客 1万+

Struts几种数据类型的xml数据校验

Struts2 的验证规则大概有以下数种:  required:必填校验器 requiredstring:必填字符串校验器 int:整数校验器 double:双精度浮点数校验器 date:日期校验器 expression:表达式校验器 fieldexpression:字段表达式校验器 email:电子邮件校验器 url:网址校验器 visitor:Visitor校验器 con

LFSenior 3823

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 536

struts2客户端校验器详解

一、Struts2内建校验器 位于xwork-2.0.4.jar压缩包中(com.opensymphony.xwork2.validator.validators)有个文件default.xml,该文件中定义了Struts2框架内建的校验器。default.xml文件定义了常用的校验器类型。 <validators> <validator name="requi...

xiaoxiaoli0_0的博客 298

视觉辅助RIS波束追踪:用摄像头“看见”用户,实现毫秒级波束对准

在无线通信领域,波束成形技术是提升高频段信号覆盖与质量的核心手段,其原理是通过调整天线阵列的相位,使信号能量在特定方向相干叠加,形成高增益定向波束。这项技术的价值在于能有效克服高频信号路径损耗大、穿透性差的瓶颈,广泛应用于5G/6G、毫米波通信及室内定位等场景。然而,传统波束追踪依赖信道估计或波束扫描,存在训练开销大、实时性差的问题。本文聚焦于一种创新解决方案:将计算机视觉与可重构智能表面(RIS)相结合。通过摄像头直接感知用户位置,并利用RIS快速重构反射波束方向,实现了近乎零开销、毫秒级延迟的波束追踪,

weixin_33552698的博客 620

PCL 将对象模板与点云对齐【2025最新版】

PCL模版匹配算法的使用案例,博客长期更新,本文最近更新时间为:2025年1月18日。

点云侠的博客 5378

struts2常用校验器及其配置

Struts2 常见校验器: required:必填校验器 requiredstring:必填字符串校验器 int:整数校验器 double:双精度浮点数校验器 date:日期校验器 expression:表达式校验器 fieldexpression:字段表达式校验器 email:电子邮件校验器 url:网址校验器 stringlength:字符串长度校验器 regex:正则表达式校验器 常用的验证

北京Java青年 2042

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 奇偶三数之和 (Java/Py/C/C++/Js/Go)

算法大师! 444

IDEA 中用 Struts2 框架实现注册登录校验器

新建 Struts2 项目 new project —> Java Enterprise —> Struts2 新建好的项目目录如下: 然而我在运行时 Tomcat 报错说“one or more Filters failed to start ...”,往上检查错误 log 发现是少了一个 javassist-3.*.*-ga.jar 的 jar 包,所以添加了它: 这个j...

过招 2016

YOLO26涨点改进 | 独家创新,特征融合改进篇 | TGRS 2025 | 引入FFM特征融合模块,实现特征的全局交互与融合,含多种组合创新改进,适合小目标检测、助力YOLO26有效涨点

本文提出了一种改进YOLO26目标检测模型的FFM模块,该模块通过跨模态注意力机制实现全局特征融合,显著提升模型对小目标、密集目标和复杂场景的检测性能。FFM采用多头跨注意力机制建模不同模态间的复杂关系,同时引入可调节下采样率降低计算复杂度。实验表明,在WHU-OPT-SAR等数据集上,FFM模块使mIoU提升0.75%,OA提升0.32%。文章详细介绍了FFM的结构原理、核心代码实现,并提供了两种改进YOLO26的yaml配置文件方案,包括FFM单独使用以及与FCM模块的组合方案。

Ai缝合怪、助力小伙伴高效发论文 190

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

念兮为美 5万+

Struts2校验器的使用

输出国际化资源文件:    校验规则文件中:        方式一:key="XX.XXX"/>        方式二:${getText("消息key")}    JSP页面中:            方式一:key="user"/>        方式二:key">                                                        ${d}     

jCuckoo的专栏 4169

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

struts2校验器规范错误解决

      今天struts2的校验器的配置文件文件头出现了错误,配置如下:        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">       出错信息如下:Referenced fil

DavyChenflash的专栏 3062

lwip-2.0.3

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Struts2 输入校验器大全

技术要点 介绍 Struts2 自带的输入校验器。   演示代码 在 xwork-2.0.4.jar 包中,请读者在 \com\opensymphony\xwork2\validator\validators 路径下找一个名字为“ default.xml ”的 xml 文件。在该文件中有所有 Struts2 自带的输入校验器定义。具体代码如下: Java代码    …………   

xu_baby的专栏 887

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Struts2校验器详解

一、Struts2内建校验器 位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框架内建的校验器。default.xml文件定义了常用的校验器类型。

qq_37332969的博客 409

struts2校验器

struts2提供的校验器列表 系统提供的校验器如下: required (必填校验器,要求field的值不能为null) requiredstring (必填字符串校验器,要求field的值不能为null,并且长度大于0,默认情况下会对字符串去前后空格) stringlength(字符串长度校验器,要求field的值必须在指定的范围内,否则校验失败,minLength参数指定最小长度,m

tonygone的专栏 671

Struts2 校验器的一些坑

一、在web.xml中需要写上校验器如下 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="h...

初学者_小铭 259

Struts2框架的校验器

Struts2框架的校验器、required、requiredstring、requiredstring、email、visitor

gzx2080205的专栏 1273

关于Struts2中visitor校验器的解决方法

这段时间重新开始拾起JAVA的学习,也是为了以后的工作打算,积累一些经验。 记得开始的时候,学习Struts2中的输入校验,就对Vistor校验器情有独钟。首先,一般我们在提交表单的时候,对表单的各字段就要有校验的过程,实际部署过程中要分 客户端校验 和服务器端校验。 客户...

chuanzhuxiong9832的博客 132
上一篇: Struts校验器总结
devpower
博客等级 码龄17年 2粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值