Struts2学习之表单验证

1、前言

     web应用程序,在很多地方都需要对数据进行验证,验证后,给用户一些提示的信息,尽量让用户知道那些信息有误,对输入信息的认证,可以在前台,也可以在后台,在前台可以用js来实现,在后台呢,也可以,如果要自己学验证方法的话

写是可以写出来,但是很繁琐,都一些if和else语句,基于这种考虑,struts提供了很一套很好的验证体系。

     这个验证功能要用到上一篇编写的代码,只是修改部分代码,和添加必需的代码。

2、strut验证的种类

    strut验证的方式可以说是挺多中的,下面是一些常用的方法。

    (1)在继承ActionSupport的动作类中重写validate()方法,至于如何验证,那就是自己编写代码的事情了,由于

            承了ActionSupport这个类,而这个类中有几个处理动作错误的方法。如下:

            1)addActionError(String anErrorMessage),当动作请求错误时,可以把需要显示给用户的信息添加进去,

                 在前台则采用struts内置的标签<s:actionerror/>就可以把在后台添加进来的信息实现给用户了。

            2)addActionMessage(String aMessage),这个方法可以将需要显示的信息显示给用户,在前台采用标签

                 <s:actionmessage/>来显示相关的信息。

            3)addFieldError(String fieldName,String errorMessage),这个方法是在字段类型输入不正确时候用到,

                 在前台用<s:fielderror/>就可以将我们在后台添加的错误信息显示给用户看了。

    (2)如果表单使用的标签都是struts内置的话,那么当用户输入的数据类型不合法时,在后台无法进行自动转换时,

            它会自动提示给用户Invalid field value for field "fieldName",虽然可以提示,但是总感觉这个提示太过于笼

            统,用户可能也不理解。这很好解决,struts程序员也想到了这点,这时,我们只要编写一个properties文件就

            可以改变显示的内容信息了,它的格式是,名字actionName.properities,这个文件要和对应的动作类在同一个

            目录下,其中的actionName就是动作类的名字,这个文件的内容也有特定的格式,invlid.fieldvalue.字段名

            ="自己想显示的内容",  例如,在前台有个name="age"的输入框,那么就应该写

            invalid.fieldvalue.age="请输入整数类型".

    (3)由于struts内嵌了xwork框架,所以它支持xwork提供的专业的数据验证体系,其实我们需要做的很事情很少

            只需要编写一个xml文件,xwork会自动调用内部的方法为我们验证。命名规则是:ActionName-validation

            .xml,也要把这个文件放到对应的动作类目录下。 

3、用实例来说话,源码和上一篇的博客一样,下面是需要修改的。

     (1)对应上边的第一种方法。

             在RegisteAction类中重写ActionSupport的validate()方法,如下

           

	public void validate(){
		if(username==null||username.length()<6||username.length()>12){
			this.addActionError("用户名无效");
		}
		if(password==null){
			this.addActionError("密码不能为空");
		}
		if(repassword==null){
			this.addActionError("确认密码不能为空");
		}
		if(password!=null&&repassword!=null&&password.equals(repassword)){
			this.addActionError("两次输入的密码不一致");	
		}
		if(birthday!=null&&graduated!=null){
			if(graduated.before(birthday)){
				this.addActionError("毕业日期不能在出生日期之前");
			}
		}
		if(point==null){
			this.addActionError("坐标不能为空,输入的两个数字要以逗号隔开");
		}
		
	}

            在registe2.jsp中输入如下:         
         
 

         提交后,显示如下:

        

     说明:可以看到,在顶部有黑点的提示信息就是在RegisteAction2类中的validate方法中编写的,在前台用了

              <s:actionerror/>标签显示出来,由于这个表单的标签都是采用struts内置的,所以当输入的类型与后

               台不匹配时,它会自动提示错误信息,但是这样的信息用户是很难看懂的。

    (2)对应上边的第二种方法,改变显示的内容,显示一些用户容易看懂的信息。

            创建一个properties文件,文件名为RegistAction.properties,由于采用的编码不一样,所以在可视化界面

            时是如下:
        
           点击源码设计时如下:

invalid.fieldvalue.username=\u7528\u6237\u540D\u4E0D\u53EF\u7528
invalid.fieldvalue.password=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
invalid.fieldvalue.birthday=\u51FA\u751F\u65E5\u671F\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\u5982\uFF1A2011-03-05
invalid.fieldvalue.graduate=\u6BD5\u4E1A\u65E5\u671F\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\uFF1A2011-04-05
invalid.fieldvalue.point=\u5750\u6807\u4E0D\u53EF\u7528\uFF0C\u683C\u5F0F\u5982\uFF1A3\uFF0C4

          都是一些我们看不懂的信息,但是没有关系,添加了这个文件后,

          现在再看看效果:     
      
 

           提示的信息确实改变了,这就是RegisteAction.properties文件起到的效果。

    (3) 采用xwork框架内置的验证机制

         RegisteAction-validation.xml文件

        

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE validators PUBLIC 
  		"-//OpenSymphony Group//XWork Validator 1.0//EN" 
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">

<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<param name="trim"></param>
			<message>请填写字符类型</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="maxLength">6</param>
			<param name="minLength">20</param>
			<message>长度在6到20个字符之间</message>
		</field-validator>
		<field-validator type="required">
			<param name=""></param>
			<message>用户名不能为空</message>
		</field-validator>
	</field>
	<field name="birthday">
		<field-validator type="date">
			<param name="min">1900-01-01</param>
			<param name="max">2012-12-12</param>
			<message>出生时间在${min}和${max}之间</message>
		</field-validator>
	</field>
</validators>

 

       说明:这个文件的标签有很多,不可能把它全都背下来,学习得有技巧,我们可以查看xwork类库下的源码,里面有

                很详细的属性,它的位置如下图所示:

               
              
                点击default.xml这个文件,显示的内容如下:

                

 

        说明:这个文件一目了然,name属性对应于ActionName-validation.xml中的

                 <field-validator type="requiredstring">的type值,而<param name="trim"></param>中的

                 name属性从哪里来呢,那就得找到上边对应的类,里面有什么属性,这个name类里面就可以填写什么。

       好了,看看效果吧,在看效果前,我先把自己在RegisteAction中的validate方法中编写的验证方法注释掉。

       效果如下:

            
            一样可以验证,当然xwork还提供了很多类型数据的验证,比如邮件,url等的验证,如果要我们自己编写的话,

             考虑的可能不是很周到,但是利用内置的验证,则可以很好得给用户提示信息。

4、小结一下:

      strut的验证方法有很多,也很全面,各种验证方法可以同时存在,在适当的时候适当的地方选择适当的验证才是最好

的方法。
    
       

 

 

【华为OD技术面试真题 - 技术面】- python面试题(1) 华为OD面试技术面准备指南 华为OD面试技术面常见问题解答 华为OD面试技术面经验分享 华为OD面试技术面注意事项 华为OD面试技术面攻略 华为OD面试技术面模拟题目与解析 华为OD面试技术面知识点梳理 华为OD面试技术面常考 阅读详情

相关推荐

su03t语音模块烧录识别不出问题解决方法

su03t语音sdk烧录无法识别问题

weixin_49387645的博客 6390

15 - Struts2 学习(5)— struts2表单验证

1 服务端 Action验证 1.1 方法1 public class UserAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); @Override public User getModel() { retur...

一角残叶的博客 422

Keil调试技巧:3种方法查看Cortex-M4的SCB寄存器(含CPUID内存映射解析)

本文详细介绍了在Keil MDK中查看Cortex-M4内核SCB寄存器的三种实战方法:使用Watch窗口进行符号化观察、通过Memory窗口直接查看物理内存映射,以及利用SFR寄存器浏览器解析位域信息。文章重点解析了CPUID寄存器的内存映射地址(0xE000ED00)及其位域含义,帮助开发者深入理解处理器身份识别与底层调试技巧,提升嵌入式系统调试效率。

h6i7j8的博客 573

Struts2学习笔记2 ――表单验证

Struts2学习笔记2 ――表单验证针对上面的login.jsp页面使用Validator验证,验证username和password两个表单的内容不能为空。首先在LoginAction所在的包org.rainlife.struts2.action中建立一个名为LoginAction-validation.xml的Validator验证文件: xml version="1.0

楓雨人生 8166

Proteus快速入门(最详细教程)

Proteus 是一款用于嵌入式单片机仿真的软件,用于在打PCB板之前对软件程序和硬件电路的正确性进行仿真验证。1.所以Proteus一般会和Keil软件进行联合仿真,在Proteus中绘制系统的电路图,在Keil软件中编写对应的程序后生成Hex文件。2.Proteus的仿真结果仅供参考,只能在一定程度上验证系统的可能性。实际实物系统还需要进行进一步的调试。以上即为本次分享的Proteus入门教程的全部内容,希望可以能够帮助到各位道友。

ediykk的博客 15万+

Zynq 双核AMP 通信

4、配置离线编译(这里不讲),配置linux的内核地址空间(0x4000_0000改为0x2000_0000),以及单核启动。CPU1设置为0x2000_0000~0x3FFF_FFFF(也可以小于0x3FFF_FFFF)如果禁用CPU1的L2 cache,在CPU1的bsp里面添加编译时候所需要的宏。3、配置工程,将vivado产生的.xsa文件复制到amp_com项目目录下。9、使用petalinux-package --boot 打包。一、vivado工程。5、编译u-boot。

y183128184的博客 1088

struts2 表单验证学习

login.jsp: <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> "> 系统登录

greensurfer的专栏 5668

Multisim仿真运放积分器踩坑实录:为什么你的方波变不成三角波?

本文针对Multisim仿真运放积分器时方波无法转换为三角波的常见问题,提供了详细的排查与调试指南。文章指出,经典RC积分电路因直流反馈开路导致运放饱和,核心解决方案是在反馈电容两端并联大阻值电阻以稳定直流工作点。通过参数优化(调整Rin、C、Rf)和高级仿真技巧,手把手教你调出线性度好、幅度适中的完美三角波,并分享异常波形(如饱和、不对称、振荡)的对应策略。

weixin_29231263的博客 115

struts2表单验证初步及国际化实现(学习总结)

struts2表单验证初步及国际化实现(学习总结) struts2表单验证的两种形式:1.Aciton类重写ActionSupport类的validate()方法: public void validate(){ if(getUsername() == null || getUsername().trim().equals("")){ ad...

ajwh64482的博客 203

mabl:AI原生测试自动化平台的基础使用

mabl是一个基于人工智能和机器学习的云原生测试自动化平台。它通过使用先进的技术,如机器学习,自动创建和执行测试,自动分析测试结果,并根据需求的变化自动适配和维护测试。这样的自动化过程极大地提高了软件测试的效率和准确性。mabl的口号是 “You write code, mabl tests”,意味着开发者只需关注编写代码,而测试工作则可以交给mabl来完成。mabl的平台支持多种测试类型,包括 Web、App、Api、可访问性和性能测试,使得团队能够更快速、更有信心地发布软件。

blues_C的博客 3661

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

Struts2学习笔记3 ――基于AJAX的表单验证

Struts2学习笔记3 ――基于AJAX的表单验证基于AJAX的表单验证需要先安装DWR,在http://getahead.ltd.uk/dwr/download上下载DWR 2.0 RC 2,将dwr.jar拷贝到WEB-INF/lib目录下1.修改web.xml,另入DWR支持: servlet>        servlet-name>dwrservlet-name>   

楓雨人生 5780

QT6实现USB摄像头接入显示与抓拍功能实现

QT实现USB摄像头接入显示 一、UVC协议简介 UVC全称是USB Video Class(USB视频类),是一种标准化的USB视频设备通信协议,它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现,解决了摄像头厂商之间互不兼容,以及摄像头应用开发与平台之间的散乱问题。 UVC标准是由USB-IF主导制定的,目前最新的版本是UVC 1.5,UVC的缺省设置类容易实现,不需要额外的驱动程序。

热土程序园,利他愉己~ 3418

Struts2学习(五)—表单验证

上一篇我们学习了struts2中的表单提交数据,我们注意到在我们输入数据时,我们并没有在HTML上编写JavaScript用于输入数据的验证 我们先看下面的一个例子 注意看,我们在age文本框中输入了字符 ,我们知道age 是int类型的此时输入了string类型的数据会怎么处理呢? 提交表单,出现了异常: 注意看异常信息 上面说返回了input 而我们的reslult没有定义

mingxin95的博客 490

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

struts2的表单验证 ,消息处理学习笔记

表单的验证 一.struts2 的验证有两种   1.声明式验证 :     1)对哪个Action 或 Model 的那个字段验证     2) 使用什么验证规则     3) 如果验证失败,调到哪个页面,显示什么消息         2.编程式验证               (1)先明确对哪个Action字段进行验证:例 age         (2)配置文件

云水禅心 367

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Struts2学习(五)—表单验证 XML

简介在本实例我们包含如何验证在表单字段输入使用 Struts 2的 XML验证技术.在 之前的学习中我们讨论了在Action类的validate方法进行表单验证. 使用分离的 XML验证文件可以使用 Struts 2 框架内置的验证器的验证能力.之前我们学习了在代码写验证,但是如果验证规则变了,要修改代码,不灵活,因而struts2提供了基于xml验证规则,使用struts的内置验证器来执行验证使用

mingxin95的博客 1007

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

struts2在学习(十)--表单验证的两种方式

1. Struts2中的输入校验2. 编码方式校验  1) Action一定要继承自ActionSupport  2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.  3) 也可针对所有的请求处理方法编写public void validate()方法。  4) 在校验方法中,可以通过addFieldError()方...

开发笔记 383

黑马程序员---struts2学习笔记之七(表单验证)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ struts2表单验证 1.struts2手动验证:         action类要继承ActionSupport类(已实现Validateable接口)或者实现Validateable接口,重写Validateable接口的validate()方法;

ajin2015的博客 646

struts2学习(一)--表单验证的两种方式

转自:http://javacrazyer.iteye.com/blog/812496 1. Struts2中的输入校验 2. 编码方式校验   1) Action一定要继承自ActionSupport   2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.   3) 也可针对所有的请求处理方法编写

langjian2012的专栏 674

struts2在学习(十二)--表单验证的两种方式

第四个示例:注解方式校验器---用户注册页面user2_registe.jsp&lt;%@ page language="java" import="java.util.*" pageEncoding="utf-8"%&gt;      &lt;%@ taglib uri="/struts-tags" prefix="s" %&gt;      &lt;!DOCTYPE

开发笔记 143
上一篇: struts2学习之类型转换
下一篇: oracle学习笔记(1)
Champion_netjava
博客等级 码龄16年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值