- 浏览: 3460971 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
struts2的核心是从webwork演变来的,其数据验证框架其实就是原webwork的那一套东西。
一,Struts2数据验证的整体框架介绍
struts2的action都要继承ActionSupprot类,这个类实现了Validateable与ValidationAware这两个跟数据验证有关的接口。其中Validateable只有一个方法validate()用于数据验证;ValidationAware 则用于记录验证出错时的相关信息。
而数据验证在什么时候被调用呢?数据验证的调用是包装在workflow拦截器里,
我们看看workflow拦截器在struts_default.xml中的定义,它是放在默认的defaultStack拦截器组里,相关顺序如下:
<interceptor-ref name="params"/> <interceptor-ref name="conversionError"/> <interceptor-ref name="validation"/> <interceptor-ref name="workflow"/> |
params与conversionError这两个拦截器在workflow的前面,它们的工作是从request中把数据转成正确的Java类型数据,以供后面处理。validation拦截器实质是AnnotationValidationInterceptor与我们这里谈的数据验证不是一回事,它只判断有没有@SkipValidation注解,如果有就不会路过数据验证,只是起一个开关作用。
当workflow拦截器触发时,它先检查当前请求的action是否实现了Validateable接口,如果实现了该接口,则调用 validate()方法:如果这个方法处理时发现有数据验证不通过,则会生成一个错误信息并交给ValidationAware的方法去存储这些出错信息。当validate()方法执行完毕,workflow拦截器还要调用ValidationAware的hasErrors()方法,看看是否有出错信息生成,如果有出错信息,就中断当前action的执行流程,返回"input"字符串,一般我们是在配置文件struts.xml里配置"input"返回结果的跳转页面。
二,数据验证的方式
1,在action类里实现validate()方法
这是最简单的方法了,直接在actionClass中实现Validateable接口的方法,如:
public class RegUser extends ActionSupport { return SUCCESS; |
配置文件: |
把所有的判断逻辑直接写到action类里,如果有验证错误,直接返回"input"。
2,使用xml配置文件:ActionClass-validations.xml
其实struts2已经内置了一些基本的数据验证,完全可以省去我们日常的一些数据验证需求,通过配置文件的方式。
在ActionClass所在的目录下,新建一个以ActionClass名字组合成的特定xml:ActionClass-validations.xml(例,我的ActionClass名为RegUser,则我应该在同目录下建一名为RegUser-validations.xml的文件),其内容如下:
<?xml version="1.0″ encoding="UTF-8″?> |
以下是目前struts2所支持的内置的验证器说明,我们可以直接在xml文件里声明拿来使用:
3,使用自己定义的验证器做数据验证
所需验证的密码数据要满足下面条件:
1,密码中要包含字母,大小写均可
2,密码中要包含数字,0-9
public class PasswordIntegrityValidator extends FieldValidatorSupport {
static Pattern digitPattern = Pattern.compile( "[0-9]");
static Pattern letterPattern = Pattern.compile( "[a-zA-Z]");
static Pattern specialCharsDefaultPattern = Pattern.compile( "!@#$");
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();
String fieldValue = (String) getFieldValue(fieldName, object );
fieldValue = fieldValue.trim();
Matcher digitMatcher = digitPattern.matcher(fieldValue);
Matcher letterMatcher = letterPattern.matcher(fieldValue);
Matcher specialCharacterMatcher;
if ( getSpecialCharacters() != null ){
Pattern specialPattern =
Pattern.compile("[" + getSpecialCharacters() + "]" );
specialCharacterMatcher = specialPattern.matcher( fieldValue );
} else{
specialCharacterMatcher =
specialCharsDefaultPattern.matcher( fieldValue );
}
if ( !digitMatcher.find() ) {
addFieldError( fieldName, object );
}else if ( !letterMatcher.find() ) {
addFieldError( fieldName, object );
}else if ( !specialCharacterMatcher.find() ) {
addFieldError( fieldName, object );
}
}
private String specialCharacters;
public String getSpecialCharacters() {
return specialCharacters;
}
public void setSpecialCharacters(String specialCharacters) {
this.specialCharacters = specialCharacters;
}
}
|
发表评论
-
Struts2的 Tiles 配置步骤
2011-01-09 16:44 3638Tiles 配置步骤 1. 项目中导入Tiles JA ... -
struts2的<s:password>标签 ...
2010-12-26 15:06 3038用<s:password>标签是遇到了一个奇怪的现 ... -
struts2 的s:param标签中文乱码
2010-11-21 18:07 6191<s:a action="manage_de ... -
struts2的struts.xml文件的元素结构
2010-11-03 23:28 1441如果排列有误,则会出现如下异常: ... -
struts2编写自定义的验证程序
2010-10-19 23:56 1832即使你对Struts内建验 ... -
FreeMarker template error
2010-09-04 22:58 4182今天直接链接到jsp就报这个错,但经过action再到jsp ... -
ActionContextCleanUp,StrutsPrepareAndExecuteFilter,StrutsPrepareFilter,StrutsEec
2010-08-27 00:45 9343struts2中 ActionContextCle ... -
struts2.x随笔
2010-08-26 16:01 1352第1: 在struts1.x中, struts ... -
Myeclipse中struts.xml无提示解决方法
2010-08-09 11:16 3554方法一: 连接上网络。 方法二: 在没有网络的情况下,选 ... -
简单理解Struts2中拦截器与过滤器的区别及执行顺序
2010-07-29 10:41 20602struts2体系结构图:当接收到一个httprequest ... -
struts2的default.properties详解
2010-07-29 10:01 4064Struts 2框架有两个核 ... -
Struts2中的OGNL
2010-07-28 16:04 2878访问Struts 2的命名对象:parameters、 ... -
解决Struts2中文乱码的几种方法
2010-07-28 12:27 1931感谢:http://akunamotata.iteye.c ...
相关推荐
1. Validator Framework:Validator Framework 是 Struts2 验证框架的核心组件,负责对用户输入的数据进行验证。Validator Framework 提供了一个通用的验证机制,可以对用户输入的数据进行验证。 2. Validators:...
其中,Struts2校验框架(Validation Framework)是该框架的核心特性之一,主要用于确保用户输入的数据符合预期的格式或范围,从而有效避免因数据不规范而引发的各种问题。 #### 二、Struts2校验框架的基本概念 在...
总结起来,Struts提供了多种验证方式,包括ActionForm验证、XML配置的Validation框架、动态验证、Tiles验证、拦截器验证、第三方验证库集成以及客户端的AJAX验证。选择合适的方式取决于项目需求和团队偏好,重要的是...
- `struts2-validation.jar` 和 `struts2-i18n-plugin.jar`: 提供了表单验证和国际化支持,`struts2-validation.jar`包含Struts2内置的验证框架,而`struts2-i18n-plugin.jar`则用于处理多语言环境。 8. **Logging...
Java校验框架(Java Validation Framework)是Java EE规范的一部分,提供了一种标准的方式来验证对象的属性。它允许开发者定义验证规则,并在数据被持久化或业务逻辑处理之前进行检查。这有助于保持数据的一致性和...
5. **Validation Framework**: Struts2提供了内置的验证框架,用于数据验证,这可能会包含独立的JAR文件。 6. **Internationalization (i18n) Resources**: 用于支持多语言的资源文件,这些通常不是JAR文件,而是....
第六章的主题涵盖了两个关键概念:国际化(Internationalization, i18n)和验证框架(Validation Framework)。这两个特性对于开发出适应多语言环境并能确保用户输入数据质量的应用程序至关重要。 一、国际化(i18n...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它由Apache软件基金会维护。这个“struts2_jar”压缩包包含了一系列的jar文件,这些文件是构建和运行Struts2应用所必需的组件。 在...
- **验证框架(Validation Framework)**:提供了一套完整的验证机制,支持客户端和服务器端的验证。 - **国际化(Internationalization)**:支持多语言,方便为不同地区用户提供本地化服务。 #### 五、小结 ...
此外,Struts框架还包括`Validation Framework`用于表单验证,`Struts TagLib`用于简化JSP页面的开发,`BeanUtils`和`Collections`等工具类用于辅助数据操作,以及`Digester`用于解析XML配置文件。 #### Struts配置...
除了上述组件,Struts还包括国际化支持、异常处理、标签库(例如Tiles框架用于布局管理)以及验证框架(Validation Framework)等,这些都极大地增强了开发者的生产力和应用的可维护性。 Struts的Validation ...
- **强大的表单验证(Validation)**:通过XML或注解方式实现,可以对用户输入进行验证。 - **强大的结果类型(Result Types)**:除了默认的JSP结果外,还可以定义自定义的结果类型,如Redirect、Stream等。 - **...
- **Validation Framework**:提供了内置的验证机制,对用户输入进行校验。 - **Tiles**:用于页面布局和组件化,提高视图的复用和管理。 通过本教程的学习,开发者将能够熟练掌握Struts框架的使用,包括配置、...
- 提供拦截器(Interceptor)、验证框架(Validation Framework)等功能。 **知识点2:开发工具与程序库版本** - **开发工具:** MyEclipse6 - **Web服务器:** Tomcat6 - **Struts版本:** Struts2.0.11.1 - **...
4. **Validation Framework**:内置的验证框架可以帮助开发者实现数据验证,可以定义在Action类或者XML配置文件中,提供了丰富的错误处理机制。 5. **Internationalization (i18n)**:Struts2支持多语言,通过资源...
Validator框架通过读取XML配置文件(如`validation.xml`和`validator-rules.xml`)来获取验证规则,然后在用户提交表单时执行这些规则,确保输入的数据满足预设的要求。 `validation.xml`文件通常位于Action类的...
除了以上核心组件,Struts还提供了其他特性,如国际化支持、异常处理、验证框架(Validation Framework)等,使得开发者能够创建更健壮、可维护的Web应用。 总结 Struts框架以其强大的MVC支持和丰富的组件库,成为...