struts2输入验证--validate()方法验证

使用struts2进行输入校验 使用struts2进行输入校验入门 (附图) 立即下载

1.action类

  1. package edu.hust.action;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. public class RegisterAction extends ActionSupport {
  6.     
  7.     private static final long serialVersionUID = 1L;
  8.     
  9.     private String username;
  10.     private String password;
  11.     private String repassword;
  12.     private int age;
  13.     private Date birthday;
  14.     private Date graduation;
  15.     
  16.     //为了节省篇幅, 便于阅读, 这里将setter方法和getter方法全部省略了
  17.     public void validate() {
  18.         /*
  19.          * 1.遇到类型转换错误的时候(也就是说不能进行类型转换), struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面, 最后这个信息会显示在相应的错误页中。
  20.          *   在这里我们不推荐使用struts2的自动验证,其一其功能有限,其二其错误输出信息只是给程序员看的,而会让使用者一头雾水。
  21.          *   解决方法:找到自动提示的错误信息,将错误信息内容覆盖为我们希望看到的--通过资源文件。
  22.          * 
  23.          * 2.空表单提交struts如何处理(不论是从register.jsp提交还是从register.action提交, 以下结论都符合)
  24.          *  (1)String类型, setter方法接收的值为空字符串:是"", 而不是null。
  25.          *  (2)int类型, setter方法接收的值为0。
  26.          *  (3)Date类型, setter方法接收的值为null。
  27.          * 
  28.          * 2.错误表单提交且类型无法转换
  29.          *   (1)int类型(如表单中输入abc, 则无法转换为int类型), setter方法接收的值为0。
  30.          *   (2)Date类型(如表单中输入abc, 则无法转换为Date类型), setter方法接收的值为null。
  31.          *   这种错误struts2会自动生成错误信息:这就带来一个bug, 如果是空表单提交, struts2不会自动生成错误信息, 我们必须人为添加错误信息, 人为添加后, 再出现错误表单提交, 这是错误输出页(即表单页)会将我们自定义的错误输出和系统自动添加的错误输出全打印出来, 造成了重复。
  32.          *   解决方案:(1)使用addActionError(); (2)s:textfield等表单标签有一个theme(主题)属性, 默认主题是使用表格; 还有Ajax等主题, 这里换为simple主题, 表示不再用表格封装这个标签(相当于把s:textfield变为了input type="text")。这样就可以消除了自动提示。(补充:s:form也有theme这个属性)
  33.          * 
  34.          * */
  35.         if (username.trim().length() < 5 || username.trim().length() > 11) {
  36.             this.addFieldError("username", "用户名长度必须在6~10之间");
  37.         }
  38.         
  39.         if (!(password.length() > 5 && password.length() < 11) || !(repassword.length() > 5 && repassword.length() < 11)) {
  40.             this.addFieldError("password", "密码长度必须在6~10之间");
  41.         } else if (!password.equals(repassword)) {
  42.             this.addFieldError("password", "请确认两次输入的密码一致");
  43.         }
  44.         
  45.         if (age < 0 || age > 150) {
  46.             this.addFieldError("age", "请输入正确年龄");
  47.         }
  48.         
  49.         if (birthday != null && graduation != null) {
  50.             Calendar cBirthday = Calendar.getInstance();
  51.             cBirthday.setTime(birthday);
  52.             Calendar cGraduation = Calendar.getInstance();
  53.             cGraduation.setTime(graduation);
  54.             if (cBirthday.after(cGraduation)) {
  55.                 this.addFieldError("birthday", "出生日期怎么可能大于毕业日期!!好好注册!!");
  56.             }
  57.         } else {
  58.             this.addFieldError("birthday", "出生日期和毕业日期不能为空");
  59.         }
  60.         
  61.     }
  62.     
  63.     public String execute() throws Exception {
  64.         return SUCCESS;
  65.     }
  66.     
  67. }

2.register.jsp

  1. <%@ page contentType="text/html;charset=GBK"%>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>
  3. <!-- struts2的s标签可以自动将程序中通过addFieldError()方法添加的错误显示出来 -->
  4. <!-- 如果不使用struts2的s标签,可以通过s:fielderror/s:actionerror标签将错误打印出来,它的作用和struts1中的html:errors作用一致 -->
  5. <!-- 在表单提交失败时,希望原来填过的值可以保留,struts2的s标签自动有保留功能,html标签需要通过request的el表达式实现保留 -->
  6. <!-- 和html不同, struts2的s:form标签默认提交方式为post(method参数默认为post) -->
  7. <s:form action="register">
  8.     
  9.     <s:textfield name="username" label="请输入用户名" />
  10.     <s:password name="password" label="请输入密码" />
  11.     <s:password name="repassword" label="请重新输入密码" />
  12.     <s:textfield name="age" label="请输入密码" />
  13.     <s:textfield name="birthday" label="请输入出生日期" />
  14.     <s:textfield name="graduation" label="请输入毕业日期" />
  15.     <s:submit value="提交" />
  16.     <s:reset value="重新添加" />
  17.     
  18. </s:form>

3.如何修改struts2在类型输入错误时自动生成的错误信息:通过"全局/局部的验证错误信息输出转换资源文件"可以实现。

  1. # 全局的验证错误信息输出转换
  2. # 例如对于age表单:没改写之前系统自动错误信息为Invalid field value for field "age". 经过下面这句改写后, 系统自动错误信息为age error
  3. # 局部.properties和全局.properties同时作用于验证错误信息输出转换时,局部有效、全局无效。
  4. xwork.default.invalid.fieldvalue = {0} error
  1. # 局部的验证错误信息输出转换
  2. # 注意命名方式。应该与在要验证的Action放在同一个包下,而且名字RegisterAction.java与RegisterAction.properties要对应起来。
  3. # 局部的验证错误信息输出转换。例如对于age表单:没改写之前系统自动错误信息为Invalid field value for field "age". 经过下面这句改写后, 系统自动错误信息为age error
  4. # 局部.properties和全局.properties同时作用于验证错误信息输出转换时,局部有效、全局无效。
  5. invalid.fieldvalue.age = age conversion error.

4.最后是struts.xml,在valudate()验证时,这里就没有特别之处了

  1. <!DOCTYPE struts PUBLIC
  2.           "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  3.           "http://struts.apache.org/dtds/struts-2.0.dtd">
  4. <struts>
  5.     <package name="struts2" extends="struts-default">
  6.         <action name="register" class="edu.hust.action.RegisterAction">
  7.             <result name="input">/register.jsp</result>
  8.             <result>/result.jsp</result>
  9.         </action>
  10.     </package>
  11. </struts>
Java struts2 validate用户登录校验功能实现 主要为大家详细介绍了Java struts2 validate用户登录校验功能实现的具体步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 立即下载

相关推荐

Ubuntu 22.04 “软件与更新”装了NVIDIA驱动,WiFi等设备不见了

在Win10装了Ubuntu22.04的双系统,台式机里面有NVIDIA 3080Ti的独立显卡,Ubuntu默认使用的nouveau驱动,需要更换成NVIDIA相应的驱动,在软件和更新里面一键安装了NVIDIA-driver-535-server之后,发现wifi、蓝牙等设备消失了。这个问题的根源据说跟这个nouveau驱动有关,希望linux社区可以解决这个问题。命令安装后 sudo reboot就可以重新看到WiFi以及蓝牙等设备图标了。然后用U盘拷贝到不能上网的Ubuntu22.04系统上,利用。

me_ysd的博客 5853

Struts2输入校验之validate输入校验方式

一.在Web系统项目中有大量的视图页面需要用户自行输入很多数据。这些数据的类型有很多种。为了防止某些客户的恶意输入以及对Web项目的恶意破坏,必须引入输入校验,像Windows操作系统的防火墙一样把一些垃圾数据过滤掉,挡在Web系统之外。接下来就来介绍一下validate输入校验方式: 1.validate方法进行输入校验:这里直接附上一个简单的用户注册功能具体介绍利用validate方法对数字

茕夜 2758

Windows 10/11 注册表 ProfileImagePath 误改修复:3步恢复用户登录与数据安全

本文详细介绍了Windows 10/11系统中因误改注册表ProfileImagePath键值导致用户无法登录的修复方法。通过3个关键步骤,包括定位SID、安全修复注册表项及验证处理,帮助用户恢复登录并保障数据安全。特别强调了操作顺序的重要性以避免数据丢失,适用于各类Windows用户账户登录错误的紧急处理。

chuoshao2508的博客 403

struts2学习之---输入校验

对异常输入的过滤,就是输入校验,也称为数据校验 输入校验分为客户端校验和服务器校验: 1. 客户端校验主要是过滤正常用户的误操作,主要通过js代码完成。 2. 服务器端校验是整个应用阻止非法数据的最后防线,主要通过在应用中编程实现。 1.编写校验文件struts2提供了基于验证框架的输入校验,使用其进行校验时无须对程序代码进行任何改变,只需编写校验规则文件即可。registFo

StrongHYQ的博客 1183

把 SAP Activate 六个阶段看透:从项目落地到 SAP BTP 扩展与 AI 运营的一体化实践

摘要: SAP Activate 方法论常被误解为简单的项目阶段划分,实则是一套将业务目标、标准流程、系统配置和持续运营串联的实施控制体系。其六个阶段(Discover至Run)构成价值递进的实施通道,核心交付集中在Prepare到Deploy阶段。Discover阶段通过DDA评估确立项目方向与范围,Prepare阶段聚焦可执行性准备,Explore阶段采用Fit-to-Standard工作坊进行需求分层,Realize阶段基于前期决策进行配置与扩展开发。该方法论强调标准化优先,差异化需求通过SAP BT

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2332

【27】软考软件设计师——数据流图(DFD)补全题满分精讲|下午15分大题深度拆解

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第27篇,深度精讲**下午案例题第1道必考大题:数据流图(DFD)补全**,该题单题分值高达**12 ~ 15分**,是整张试卷最稳的保底得分大题。我结合多年备考复盘与真题阅卷规则,超详细拆解DFD四大核心元素标准定义、机考绘图规范、三层分层逻辑、**父图子图平衡刚性扣分规则**,升级强化版「DFD满分补全三步法」;复刻历年高频真题完整流程,拆解缺失数据流定位、实体/存储辨析、平衡改错、文字需求对照全流程,配套**阅卷满分答题话术、机考避坑细则

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 590

Struts2学习笔记(3)--输入校验

Struts2学习笔记(3)--输入校验 输入校验 =====================================1.register.jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;&lt;from action="register.action" method="post"&gt;  &lt;s:fielde

liangjianjun的专栏 152

【雕爷学编程】Arduino智慧交通之RF24通信实现车队之间的实时通信和协调

通过这些示例,车队领导可以发送指令给车队成员,车队成员可以接收指令并执行相应的操作,同时车队成员也可以发送自己的位置信息给车队领导或其他成员,以实现车队之间的实时通信和协调。例如,在高速公路上,车队中的车辆可以根据前方车辆的速度和位置信息,自动调整自身的速度和距离,以保持车队的整体稳定和安全。Arduino智慧交通系统利用RF24通信模块实现车队之间的实时通信和协调,通过无线通信技术,车辆之间可以实时传输数据和指令,以实现车队的协同行驶和交通优化。通过数据处理和分析,可以生成实时的交通信息和统计数据。

雕爷学编程 1075

struts2--使用validate()验证

表单验证: 通过validate()方法来验证输入数据格式的正确性,需要实现ActionSupport类 登录界面: LoginAction: package com.action; import com.opensymphony.xwork2.ActionSupport;

持之以恒 561

【大模型】AI 辅助编程操作实战使用详解

AI 编程实战使用详解

congge 8460

【推荐100个unity插件】性能极高的逼真爆炸、火焰和烟雾效果——UNI VFX

这是一篇关于Unity中高性能GPU粒子特效插件UNI VFX的使用指南。文章介绍了该插件提供逼真的爆炸、火焰和烟雾效果,支持URP和HDRP渲染管线。主要内容包括:插件安装方法(需预先安装Visual Effect Graph和Shader Graph包)、事件系统使用方法(如create/loop/stop等事件控制)、特效分类(自动结束型和持续型特效)、检视面板配置技巧以及性能优化建议(特别提醒灯光特效对性能的影响较大)。文末还推荐了多个Unity开发相关的专栏内容。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1490

输入校验二(struts2中的输入校验,服务器端)

在struts中有validate()方法,可以用于实现在服务器端对用户输入信息进行校验。 该方法需要类继承ActionSupport类,通过重写validate()方法实现。 struts2框架在执行Action类时,会在调用该Action类中的罗技处理方法之前,调用validate()方法。 validate()方法的父类中还有一个addFieldError()方法,可以在该方法传入fi

yytoo2的博客 530

【C++】【STL算法】数据窄化及代码安全性

本文系统探讨了C++工程中数据窄化(narrowing conversion)的隐患与解决方案。数据窄化指将高精度/大范围类型转换为低精度/小范围类型,虽语法合法但会导致静默精度损失。其危险性体现在:错误隐蔽、STL会放大问题、数值错误具有传播性。现代C++要求窄化必须显式声明,文中提出四种工程解决方案:显式转换、边界统一转换、范围检查转换和使用GSL工具。建议在系统边界集中处理窄化,保持计算链路类型一致性,并通过分层策略(建模用double,控制用float)确保数值稳定性。核心思想是让窄化成为清晰可控的

Double Galaxy 80

Struts2输入校验(一)

Struts2对服务器端的输入校验 验证的实现 在 Action 类中重写父类 ActionSupport的vilidate()方法,达到对客户端发过来的请求进行校验,父类的vilidate()方法是空实现 二>表单用struts2标签来实现 表单页面也可以用struts2标签来实现,提交方式struts2默认是POST方式,而且全部属性加了表格标签来实现, 如下

Super的专栏 1067

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

struts2中的validate()方法验证

<br />validate()方法验证<br />一个ACTION类继承ActionSupport有何用处?<br />答:在ActionSupport中实现了很多接口,就拿一个来讲,validate()方法,是默认的验证。我们可以在我们的action类中重写一下此方法。比方说验证用户名是否为空。这个方法不需要调用,当S:FORM表单提交了,到了action类中会首先执行此方法。对数据进行验证。<br />(1)、前台页面<br /><s:form action="login" method="post"

chssheng2007的专栏 9562

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Struts2验证

Struts2的输入效验在struts2中,我们可以实现对action的所有业务方法进行校验或者对action的指定业务方法进行校验。 对于输入校验struts2提供了两种实现方法: 1. 基于验证方法编写代码实现。 2. 基于验证框架配置方式实现。 基于验证方法编写代码实现在action中提供validate() 方法实现输入校验,该方法对action中所有的业务方法均有作用。当某个数据校验失

Programmer_s的博客 477

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

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

java struts validate_Java struts2 validate用户登录校验功能实现

首先贴一下搭配的环境:配置:eclipse4.3.2jdk1.7_45mysql 5.0+然后切入正题:1、login.jsp主要是使用ognl 标签 也可使用html form表单,调用loginaction.action,以post 方式传输。在loginaaction 经过判断,然后会有提示信息,需要用到 来显示。登录请登录--%>2、struts.xml配置命名空间为“/”,继承”s...

weixin_29306571的博客 214

struts 2的输入校验

struts 2的输入校验一般有一下几种: 1、在action类的处理方法中进行校验。这种方法不推荐使用,因为这样会使得代码臃肿,不易维护。 2、继承ActionSupport类,重写其validate()方法实现输入校验。这个不多说,因为重点在第三种方法里。 3、应用struts 2的校验框架进行校验。使用框架校验需要在程序中创建一个配置文件,文件的名称与内容要按照一定的规则编写才能起到作

zhangfeikk0的专栏 677

Struts2中输入效验

Struts2中常见的输入效验有一下三种 使用Javascript完成客户端效验 使用Javascript客户端需要编写Javascript 并且需要浏览器支持 function check(form){ with(form){ if(username.value == ""){ alert("用户名不能为空!"

pxc_1994的博客 342

Struts2 输入校验

Struts2 的表单输入校验有多种方法。 1.重写 ActionSupport 类的 validate() 方法。   将需要验证的逻辑写在该方法中,那么当执行该Action的时候会先执行该方法再执行execute()方法。但这个方法有一个缺陷,就是一个表单只能对应一个Action. 2.重写 validateXxx 方法。   比如在 LoginAction 类中,我们想有验证logi

IT丶WE丶OWN 的专栏 610

Struts2的输入校验

Struts2的输入校验分为两种:客户端校验、服务器端校验。 1、客户端校验:通过在客户端用js脚本语言或Ajax进行的校验。 2、服务器端校验:将校验放在服务器端进行校验。可以在Action的execute()方法中进行校验。 注:一般不在execute()方法中进行数据的校验,因为execute()方法的主要功能是调用业务组件和逻辑视图。 Struts2的手工验证: ActionSupport...

专注Java后端技术干货、项目源码总结分享,期待您的关注。 227

struts2 之 输入校验

struts2 提供了服务器端和客户端输入验证  1. 通过重写validate()方法: 当验证不通过时 Action返回名为input的逻辑视图,并可通过 在该视图中输出错误 信息,注意action应该继承ActionSupport。通过ActionSupport中的addFieldError("字段名","错误信息")将错误信息添加到相应字段,如果有struts的表单标签,则相应的字段处

左手程序,右手写诗… 1054
上一篇: struts2类型转换续
下一篇: struts2输入验证--验证框架(xml文件验证)
ForWayfarer
博客等级 码龄20年 60粉丝 96原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值