Struts2的验证框架

Struts2验证(框架验证) Struts2验证有手动验证和验证码验证,Struts推荐采用配置文件的方式进行数据校验 a.继承ActionSupport类 b.修改struts2.xml文件:删除method属性 c.在需要验证的Action类的相同包下,写一个"类名-validation.xml"文件 d.加入头信息以具有提示功能 DOCTYPE validators PUBLIC "-//Apache St 阅读详情

最近在研究Struts2的验证框架,写写它的实现步骤,对大家进一步了解Struts2的验证有一定的帮助。

为什么要验证框架
  1. 用户无需编码,在外部配置文件中指定某个字段的验证类型,并提供出错信息即可
  2. 使用验证框架可以减轻开发者负担,提高开发效率

下面通过一个实例来说明:

先看需求:完成一个注册页面的验证,需求如下:

  1. 用户名:不能为空,长度在6和10之间
  2. 密码:不能为空,密码长度>=6
  3. 确认密码:必须和密码相同
  4. 电话:不能为空,符合电话号码格式
  5. 用户姓名:不能为空,长度在2和4之间
第一步:创建RegisterAction
public class RegisterAction extends ActionSupport {
	private User user; // 用户信息
	private String repassword; // 确认密码
	private UserBiz userBiz = new UserBizImpl();

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getRepassword() {
		return repassword;
	}

	public void setRepassword(String repassword) {
		this.repassword = repassword;
	}

	// 验证方法
	public void validateExecute() {
		if (!userBiz.validate(user.getName().trim())) {
			addFieldError("user.name", "用户名存在");
		}
	}

	// 注册方法
	public String execute() {
		if (!userBiz.register(user)) {
			this.addFieldError("user.name", "注册失败");
			return INPUT;
		}
		return SUCCESS;
	}
}
第二步:在struts.xml中配置action
通过“input”指定验证错误时需返回的页面
<!-- 用户注册 -->
<action name="register" class="cn.jbit.houserent.action.RegisterAction">
	<result name="input">/page/register.jsp</result>
	<result>/page/success.jsp</result>
</action>

第三步:创建注册页面register.jsp
注意:当使用s标签的时候,出错信息会自动显示在相应的验证表单项后
<s:form action="register">
	<s:textfield name="user.name" label="用户名" />
	<s:password name="user.password" label="密码" />
	<s:password name="repassword" label="确认密码" />
	<s:textfield name="user.telephone" label="电话" />
	<s:textfield name="user.username" label="用户姓名" />
	<s:submit value="立即注册"></s:submit>
</s:form>

第四步:创建验证文件
要和验证的Action放在同一个包下
命名ClassName-validation.xml或ClassName-alias-validation.xml,其中ClassName表示Action类名,而alias表示在struts.xml中配置Action的名字。后者用于Action中有多个业务方法时
<?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>
	<field name="user.name">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>用户名不能为空</message>
		</field-validator>
	</field>

	<field name="user.password">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>密码不能为空</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">10</param>
			<message>密码长度须在${minLength}和${maxLength}之间</message>
		</field-validator>
	</field>

	<field name="repassword">
		<field-validator type="fieldexpression">
			<param name="expression">
				user.password==repassword
			</param>
			<message>密码和确认密码必须相同</message>
		</field-validator>
	</field>

	<field name="user.telephone">
		<field-validator type="requiredstring">
			<message>电话号码不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="expression">
				^(\d{3,4}-)+(\d{7,8})$
			</param>
			<message>电话号码格式不正确</message>
		</field-validator>
	</field>
</validators>

第五步:使用验证框架编写验证规则
验证文档里的<field-validator type="">中的type类型要和User中的属性类型一致,否则会报类型转换错误
field-validator的type的取值:
int 整数;
double 实数;
date 日期;
expression  两数的关系比较;
email Email地址;
url web地址;
regex 正则表达式验证;
conversion 转换;
required 是否为空;
requiredstring 必须字符;
stringlength 输入字符长度限制;

 

通过以上的步骤之后,就可以实现Struts2的验证功能。

 

Struts 2校验框架的应用 (1):对用户名的检验规则是用户名不能为空,且只能是字母,数字,长度为4到25之间。 (2):对密码校验的规则是用户不能为空,且只能是数字,长度为8到20之间。 (3):年龄的校验规则是必须是整数,且在1到120之间。 (4):生日的校验规则是必须在1950-1-1到1990-1-1之间。 (5):所有提示信息均要用到国际化资源文件实现。 (6):注册成功返回success.jsp页面,显示所有注册信息。 立即下载

相关推荐

S7-1500与WinCC GroupDisplay组显示的高效配置指南

本文详细介绍了S7-1500 PLC与WinCC GroupDisplay组显示功能的高效配置方法,涵盖报警状态配置、WinCC端组显示控件设置及常见问题排查。通过实战案例和优化建议,帮助工程师快速掌握工业自动化项目中报警信息可视化的关键技术,提升生产线监控效率。

weixin_29292535的博客 440

struts2 validate用户登录 校验

请登录 --%>

tikitoo的专栏 1401

深入解析国家企业征信系统瑞数6vmp算法逆向实战

本文深入解析了国家企业征信系统所采用的双层防护机制,重点聚焦于瑞数6代vmp算法的逆向实战。文章详细拆解了从加速乐521状态码的绕过,到瑞数412挑战的核心算法还原过程,提供了通过动态Hook、日志分析进行算法逆向,并用Python实现自动化请求链的完整技术方案,旨在为安全研究与技术学习提供参考。

yellow的专栏 612

JSP的Struts2框架实现数据库连接的登录验证界面

框架这东西刚开始看真的是一脸懵逼,用struts2做了一个简单的登录小功能,现在对于框架已经是十分明朗了。在Eclipse上开发的Dynamic Web Project使用的tomcat-7.0.73和struts2.5.16配置好tomcat这个自然不用说,教程网上全都是首先配置好web.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;we...

Shiina Mashiro no youni 2056

Backblaze 2025全年硬盘故障率报告解读

作为长期追踪存储行业动态的科技博主,每年/季度Backblaze的Drive Stats报告都是我重点关注的核心内容——不同于厂商发布的实验室数据,Backblaze以近13年、数十万片企业级硬盘的真实运行数据为基础,其年化故障率(AFR)、寿命趋势等结论,直接反映了硬盘在严苛数据中心环境下的真实表现,无论是企业存储选型还是个人高端存储参考,都具备极高的实用价值。2025年末,Backblaze发布了第13年的年度收官报告,涵盖2025年Q4、全年及终身硬盘可靠性数据。

存储随笔 4020

C++中const和指针*的组合问题

今天在复习> 章节7.3的时候想到以前做的一个题,const和指针运算符*的若干种组合的合法性和意义问题,有点混淆,所以写了一个测试代码来验证一下,简单明了,一目了然。如果有什么遗漏的话欢迎指出。 首先是在Ubuntu14.04.1下用gcc 4.8.4编译运行的结果,编译器报错信息都附加在对应语句后面的注释里 /* * Note : Test for the combinations of

theColdOne的专栏 1082

struts2学习(2种实现验证方式)

第一种 Struts2中提供了一个com.opensymphony.xwork2.Validateable接口,此接口只有一个方法:validate()。如果有某个类实现了Validatable接口,Struts2就可以直接调用该类中的validate()方法。ActonSupport类实现Validateable接口。本文讨论此验证格式。 本文演示了一个模拟简单登录的场景:用户打开一

蓝星花 1057

FPGA图像处理入门 ZYNQ7020 图像中值膨胀腐蚀滤波

图像处理的三种滤波 中值滤波应用较为广泛 综合膨胀和腐蚀可以实现边缘检测。

Coast_的博客 715

eclipse下用J2EE(hibernate,struts2,spring)实现的简单登录、注册系统

最近加入了大四学长们的开源项目,本想在里面凑个人数,仅仅体验下开发的流程,没想到学长们竟然安排了精心的培训,向我们细致的介绍了J2EE的实现框架,着重强调了SPRING,HIBERNATE,STRUTS三者的分工,与合作,so,不用心也难啊~~~他们说的时候都明白,但真正到了自己做又是另一码事,在断断续续近两周的时间,我终于自己成功配置出一套登录注册系统,平台是在ECLIPSE下,虽然非常简单,但

鸠鸠 4257

【KDD2024】ShapeFormer:用于多元时间序列分类的Shapelet Transformer

多元时间序列分类(MTSC)因其在现实世界中的广泛应用而吸引了大量研究关注。最近,Transformer在MTSC中取得了先进的性能。然而,

m0_52597077的博客 4747

HX711重量传感器原理图设计,已量产(压力传感器)

最近调通了一款针对家用、物联网场景的重量传感套件,核心用了 HX711 这颗经典的称重 AD 芯片,还加了用户最需要的 “一键校准” 功能 —— 之前帮朋友做家用米桶余量报警时,用户总吐槽校准步骤太繁琐,这次的方案把操作简化到只按一个键,试下来体验好了不少。正好拆解下这套硬件的设计逻辑,供做同类产品的朋友参考。

不脱发的程序猿 369

Struts2之验证框架

1:Struts2提供了验证框架,功能强大而且简单易用,帮助用户做了很多事情,使得用户不必从头开发。那么一个好的验证框架需要考虑哪些因素呢?*验证功能的复用性比如都是对一个int数据类型的验证,验证的是它的数据范围,如果验证功能抽象的好,就可以复用同样的验证功能,省去重复开发的麻烦。 *验证功能的可扩展性 是不是可以自己扩展验证功能,并保证扩展功能和原有的框架功能一样使用。*验证与业务逻辑分离

至尊宝 555

视频理解与处理——OpenClaw视频能力深度解析(2026视频版)

本文介绍了OpenClaw视频理解与处理的核心技术,重点分析了视频预处理流程。通过VideoProcessor类实现视频加载、帧采样、尺寸调整和归一化等基础处理功能,支持本地和在线视频源处理,为后续视频分析任务提供标准化输入。预处理模块采用均匀采样和标准化方法优化视频数据,确保动作识别、场景分析等高级应用的准确性,展现了OpenClaw强大的视频处理能力。

一键难忘的博客 464

关于struts2验证框架

struts2验证框架分为字段(field校验--面向字段、字段优先)校验器和非字段(validator--校验面向validator、validator优先)校验器. 通过验证框架验证,只需要删除掉原来validate()方法中的内容(这篇blog是基于"struts2输入验证--validate()验证"的),再增加一个xml文件即可:一个Action对应一个验证xml(RegisterAc

小张的编程之旅 487

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Struts2验证框架的基本实现

在学习此框架之前,我们先了解下一个好的验证框架都需要考虑什么: 1.验证功能的验证性 2.验证功能的可扩展性 3.验证与业务逻辑的分离 一.使用Struts2中的验证框架 非常简单,只需要添加一个XML,这个XML命名为Action类名-validation.xml (实现了1,2,3),放在需要验证的Action类同包中,其内容为这个Action的execute方法运行之前要对用户的输入进行各种...

c1776167012的博客 306

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

struts2 验证框架

java代码: 查看复制到剪贴板打印 public class UserModel {       private String account;       private String name;       private int age;       public String getAccount() {           

DOVEty的专栏 917

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Struts2验证框架

1.Struts2提供了验证框架,功能强大而且简单易用,帮助用户做了很多事情,使得用户不必从头开发。那么一个好的验证框架需要考虑哪些因素呢?(1)验证功能的复用性     比如都是对一个int数据类型的验证,验证的是它的数据范围,如果验证功能抽象的好,就可以复用同样的验证功能,省去重复开发的麻烦。  (2)验证功能的可扩展性           是不是可以自己扩展验证功能,并保证扩展

618

Struts2的验证框架简单吗?

Struts2验证框架是基于Struts拦截器开发的,具有良好的扩展性;一般的验证都可以支持。现在我们以一个注册验证的例子进行总结: 新建一个model,User: 1 public class User { 2 private String userName; 3 private String name; 4 private int age; 5...

weixin_30252155的博客 97

struts2框架(四)——使用验证框架

主要内容: 深入struts2验证框架将动作关联到验证框架编写自定义验证器验证框架高级主题 深入struts2验证框架 1.验证框架的架构 验证框架3个主要组件:域数据(domain data)、验证元数据(validation metadata)、验证器(validator)。 1.域数据——验证的数据,以javaBean属性,j

hi! 2104

Struts2 验证框架的应用

最近因为用到了Struts2的验证框架,就在网上找到了一篇教程,但在使用时感觉有些地方作者没有提到,或是解释清楚,或是没有强调,因此在这稍作补充:      1、一般验证不能通过时会回到提交前的页面并显示错误信息,validation框架是通过在struts.xml中添加来实现的,这一点教程中没有说清楚      2、要显示错误信息必须在jsp页面相应位置添加标签      3、val

卷柏人生 1469

struts2 手动验证和框架验证

手动验证 struts.xml <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "http://struts.apache.org/dtds/struts-2.3.d...

vincent_duan的专栏 180

Struts2复习之Struts2验证框架

今日目录: ​1、Struts2 验证简介 ​2、Struts2 内置验证 ​3、自定义验证 一、Struts2 验证简介 Struts2 基于 Struts2 拦截器,为开发者提供了一套易用的验证框架,并可扩展;一般的验证都支持; 二、Str...

chitunqiao0796的博客 157

Struts2框架验证

struts2有框架验证,我这边主要说的是XML配置的struts2的框架验证,继承validate方法的验证还是比较容易的,至于有人用注解来验证不怎么常见我也不讲了(感觉好多东西总结的都会有注解来掺和一脚,比如spring注入方式,最常见的一种总结三种方式就有注解,但是我认为注解这种方式不是很好维护不管干什么,也许是我才疏学浅不太懂,看来是时候好好学习一下注解了)。 框架验证还是很必要的,因为验

FeiChangWuRao的博客 581
上一篇: getElementsByName用法(附实例)
下一篇: 使用Socket实现文件的传输
夜光寒
博客等级 码龄23年 127粉丝 41原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值