Struts2提供了客户端校验与服务端校验。这里只是做个简易的总结。
1.)服务端校验:
当程序流程进入到Action类,并经历了struts2的类型转换阶段后。接着进入struts2的输入校验阶段。
struts2的输入校验可自己编码进行校验,也可通过有规则命名的配置文件进行校验。
1.1)编码校验:
在Action类里重写父类的validate()方法即可。
public void validate(){
if(null == username || "".equals(username)){
this.addFieldError("username","username should not be empty !");
}else if(username.length() < 6 || username.length() > 12){
this.addFieldError("username","username should be between 6 and 12 !");
}
if(null == password || "".equals(password )){
this.addFieldError("password ","password should not be empty !");
}else if(password .length() < 6 || password .length() > 12){
this.addFieldError("password ","password should be between 6 and 12 !");
}
}
在上面的validate方法中,一旦发现校验失败,就把失败提示通过addFieldError方法添加到系统的fieldError中。校验完毕后,若系统的fieldError不为空,则自动转到input视图对应的JSP页面中输出错误提示,这与类型转换失败后的处理是完全一样的。
为了在input视图中对应的JSP页面输出错误提示,应该在该页面中增加如下代码:
<!-- 输入类型转换失败提示和校验失败提示 -->
<s:fielderror/>
这里不能忽略另外种情况:
Struts2的Action类里可以包含多个处理逻辑,不同的处理逻辑对应不同的方法。即Struts2的Action类里定义了几个类似于execute的方法,只是方法名不同。而重写validate方法无法知道需要校验的是哪个处理逻辑。实际上重写validate方法会校验所有的处理逻辑。
为了校验指定处理逻辑,需提供一个validateXxx()方法,其中xxx为Action对应的处理逻辑方法。
例如Action类里有个login()逻辑方法,那么对应的校验方法validateLogin()方法。
但之后还是会调用validate()进行校验,因此此时validate()没必要写了,或者让validate()进行公共字段的校验。
1.2)配置文件校验
只需为Action指定一个校验文件即可。
在Action类所在的com.test.action包下建立LoginAction-validation.xml校验文件(格式:Action类名-validation.xml).
LoginAction-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>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>username should not be empty !</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>username should be between ${minLength} and ${maxLength}!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password should not be empty !</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>password should be between ${minLength} and ${maxLength}!</message>
</field-validator>
</field>
</validators>
每个<field.../>元素指定一个Action属性必须遵守的规则,该元素name属性指定了被校验的字段;如果该属性满足多个规则,则在该<field.../>下增多个<field-validator.../>。
每个<field-validator .../>指定一个校验规则,该元素的type属性指定校验器名称该元素可以包含多个<param .../>子元素,用户指定该校验器的参数;除外,每个<field-validator .../>元素都有一个必须的<message .../>元素,用户确定校验失败后的提示信息。
例子中只采用了"必填字符串校验器"和"字符串长度校验器"2个校验规则。
struts2貌似共提供了13个校验器:
required:必填校验器
requiredstring:必填字符串校验器
int:整数校验器
double:双精度浮点数校验器
date:日期校验器
expression:表达式校验器
fieldexpression:字段表达式校验器
email:电子邮件校验器
url:网址校验器
visitor:Visitor校验器
conversion:转换校验器
stringlength:字符串长度校验器
regex:正则表达式校验器
用法大部分雷同,用到的时候可自己google搜索。
配置文件校验肯定不输给编码校验的,自然也提供了对应于具体业务逻辑的校验规则文件的格式:
<Action类名-Action所包含的处理方法在struts.xml对应的name属性-validation.xml>
例:
<!-- 配置一个名为user的Action,对应的逻辑方法为UserAction的login方法-->
<action name="login" class="com.test.action.UserAction" method="login">
<result name="input">/login.jsp</result>
<result name="success">/index.jsp</result>
</action>
则此逻辑方法对应的校验规则文件为:
UserAction-login-validation.xml
与编码校验一样,校验错误信息会添加到系统的fieldError中,校验完毕后若FieldError不为空。则进入到input视图对应的JSP。在<fieldError/>处输出错误提示。
提醒:没记错的话。与编码校验不同的是校验顺序,配置文件校验方式下,
先UserAction-validation.xml,再UserAction-login-validation.xml,
因此若是只针login()逻辑进行输入校验的话,那UserAction-validation.xml没必要写了,或让其进行公共字段的校验
2)客户端校验
增加客户端校验非常简单,将输入页面的表单元素改为使用struts2标签来生成表单,并且为该表单增加validate="true"属性即可。
输入校验完毕后再进入到业务逻辑方法来调用具体业务方法(续--Struts2核心拦截器)。
分享到:
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
Struts 2 输入校验
本篇文章将深入探讨Struts2中的输入校验机制。 一、Struts2 输入校验概述 Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。...
本文将深入探讨Struts2中的输入校验机制,以及如何对指定方法进行输入校验。 在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但...
本文将深入探讨Struts2中的输入校验机制,帮助开发者更好地理解和应用。 一、Struts2输入校验概述 在Struts2中,输入校验主要用于验证用户通过表单提交的数据,防止无效或恶意数据进入系统。Struts2提供了多种方式...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
在Struts2中,输入校验是确保数据安全性和应用稳定性的重要环节。它帮助开发者防止非法或无效的数据进入系统,从而减少潜在的错误和安全漏洞。 **Struts2输入校验机制** 1. **内置验证框架**: Struts2提供了内置的...
Struts2是一个流行的Java web开发框架,它提供了一套强大的输入校验机制,确保用户提交的数据符合业务逻辑的要求。在本文中,我们将深入探讨Struts2的输入校验功能,包括手动输入校验和基于验证框架的输入校验。 ##...
在Struts2中,输入校验是确保数据完整性和安全性的重要环节。输入校验可以防止恶意用户提交无效或有害的数据,并确保应用程序的稳定运行。以下是关于Struts2输入校验的详细知识: 1. **客户端校验**: 客户端校验...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
Struts2作为一款流行的Java Web框架,其在处理用户输入数据和实现多语言支持方面具有强大的功能。在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
在Struts2框架中,输入校验是一个关键环节,它确保了用户提交的数据符合应用的要求,从而避免了无效数据导致的错误或安全问题。本讲将深入探讨Struts2的输入校验机制。 1. **Struts2输入校验概述** - 输入校验是...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...