`

struts2学习之数据校验

阅读更多

Struts2框架的输入校验是通过XML配置文件或者注解来实现的,当然在Action中进行手动(编码)校验也是允许的,并且可以手动校验和XML配置文件或者注解方式校验一起使用。

数据校验依赖于validationworkflow两个拦截器。validation拦截器进行校验并创建具体字段错误的列表,workflow拦截器检查存在的校验错误,如果有,就返回"input"结果码,返回到包含校验的表单页面。

在基于Struts2框架的Web应用中,输入校验即可以通过在服务端完成,也可以在客户端完成。本文主要记录Struts2在服务端的几种校验方式。

Struts2在服务端的校验方式主要有两种:

(1)基于硬编码的方法:

              在业务控制器类中重写validate()方法或者使用形式为validateXxx()形式的校验方法对输入数据进行校验。其中Xxx表示action中不同的方法名称。

package cn.bdx.controller;

import cn.bdx.model.Book;

import com.opensymphony.xwork2.ActionSupport;

public class BookController extends ActionSupport{
	private Book book;
	/**
	 * 添加书籍
	 * @return
	 */
	public String add() {
		return SUCCESS;
	}
	/**
	 * 添加书籍的验证
	 * @return
	 */
	@Override
	public void validate() {
		if(book == null) {
			this.addFieldError("bookError", "book不能为空");
		}else if(book.getName().isEmpty()) {
			this.addFieldError("bookError", "书名不能为空");
		}else if(book.getPrice() < 0) {
			this.addFieldError("bookError", "价格不能为空");
		}
	}
	public Book getBook() {
		return book;
	}
	public void setBook(Book book) {
		this.book = book;
	}
	
}

或者:

package cn.bdx.controller;

import cn.bdx.model.Book;

import com.opensymphony.xwork2.ActionSupport;

public class BookController extends ActionSupport{
	private Book book;
	/**
	 * 添加书籍
	 * @return
	 */
	public String add() {
		return SUCCESS;
	}
	/**
	 * 添加书籍的验证
	 * @return
	 */
	public void validateAdd() {
		if(book == null) {
			this.addFieldError("bookError", "book不能为空");
		}else if(book.getName().isEmpty()) {
			this.addFieldError("bookError", "书名不能为空");
		}else if(book.getPrice() < 0) {
			this.addFieldError("bookError", "价格不能为空");
		}
	}
	public Book getBook() {
		return book;
	}
	public void setBook(Book book) {
		this.book = book;
	}
	
}

 注:这种方式代码的耦合度比较高。

(2)基于配置文件的方法:

              这种方式是吧校验规则保存在特定的XML格式配置文件中,实现输入校验和Action类的分离,以此来降低代码的耦合性。规则结构由xwork-validator-1.0.2.dtd文件定义的,新建BookController-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="book.name">
		<field-validator type="requiredstring">
			<message>书名不能为空!</message>
		</field-validator>
	</field>
	<field name="book.price">
		<field-validator type="required">
			<message>请输入单价!</message>
		</field-validator>
		<field-validator type="double">
			<param name="minExckusive">0</param>
			<message>单价必须大于${minExclusive}</message>
		</field-validator>
	</field>
</validators>

 基于validator校验器的校验规则:

<?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>
	<validator type="requiredstring">
		<param name="fieldName">book.name</param>
		<message>书名不能为空!</message>
	</validator>
	<validator type="double">
		<param name="fieldName">book.price</param>
		<param name="minExckusive">0</param>
		<message>单价必须大于${minExclusive}</message>
	</validator>
</validators>

BookController-validation.xml文件在项目中的位置跟BookController处于同一个包中

分享到:
评论

相关推荐

    struts2 简单数据校验

    Struts2是一个非常流行的Java Web框架,用于构建企业级应用。在Struts2中,数据校验是一个重要的功能,...这个压缩包对于学习和掌握Struts2数据校验机制非常有帮助,特别是对于那些希望提升Java Web开发技能的人来说。

    Struts2简单数据校验源码 20120417

    通过研究这个源码,我们可以学习如何在实际项目中实施Struts2的数据校验,了解其内部工作原理,以及如何自定义和优化校验过程。对于任何使用Struts2的开发者来说,掌握这些知识点都是非常有价值的。

    Struts2输入校验总结

    在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中重写`validate()`方法是最常见的做法。此方法允许开发者...

    Struts2简单数据校验源码

    总之,Struts2的数据校验机制是其强大功能之一,它帮助开发者有效地管理用户输入,保证数据的准确性和完整性。通过深入研究“Struts2_1100_SimpleDataValiation”源码,你可以掌握Struts2数据校验的基本原理和实践...

    Struts2中的validation_多国语言版 国际化i18n+struts2数据校验.zip

    总的来说,这个压缩包提供了一个全面的学习资源,涵盖了Struts2框架中的关键功能:数据校验、前端和后端校验策略、国际化处理以及错误信息的样式定制。通过深入研究这些文档和示例,开发者可以有效地提升其在Struts2...

    Struts2数据校验

    Struts2 数据校验是Java Web...学习并熟练掌握Struts2的数据校验,不仅可以提升开发效率,还能帮助开发者编写出更加健壮、可靠的Web应用。因此,无论你是初学者还是经验丰富的开发者,都应该深入理解和实践这一功能。

    struts2校验器与校验框架精彩学习笔记

    本学习笔记主要探讨了Struts2中的校验器(Validator)和校验框架,帮助开发者理解如何有效地实现数据验证,确保应用程序的健壮性。 首先,我们来看Struts2的校验框架。这个框架提供了强大的功能,可以对用户输入...

    struts2标签+校验+SSH

    与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...

    struts2帮助文档

    struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2...

    Struts2自定义校验框架

    当数据校验失败时,Struts2会自动将错误信息放入ActionContext,可以通过`ActionContext.getErrorMessages()`获取这些错误信息。在JSP页面中,可以使用Struts2的标签库如`s:fielderror`来显示错误信息。 6. **...

    struts用户注册登录用校验器校验信息

    2. Struts的校验框架,如何通过`validation.xml`定义和实现数据验证规则。 3. 数据库交互,可能涉及到JDBC或ORM框架如Hibernate来操作用户数据。 4. 用户注册和登录的业务逻辑,包括数据验证、错误处理以及成功后的...

    struts2中文学习文档

    从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...

    struts2入门学习源码

    3. **Interceptor**:拦截器是Struts2的一个强大特性,它允许在Action调用前后插入自定义逻辑,如日志记录、权限验证、数据校验等。通过配置Interceptor栈,可以灵活控制Action的执行流程。 4. **文件上传**:在...

    struts2学习笔记.doc

    - **框架原理**:Struts2提供了强大的输入校验功能,可以自动检查用户提交的数据是否符合预期。 - **配置方式**: - 使用注解方式(适用于Struts2较新版本)。 - 在`struts.xml`或Action类中通过配置文件的方式...

    Struts2校验学习

    在Struts2中,校验是确保数据质量和系统安全的关键环节。本文将深入探讨Struts2中的验证机制,以及如何利用它来提高应用的健壮性。 1. **Struts2验证框架基础** Struts2提供了强大的内置验证框架,允许开发者定义...

    struts2 adtion 方法的校验一

    这篇博客“Struts2 Action方法的校验一”很可能是关于如何在Struts2中对Action方法进行数据验证的探讨。 数据验证是Web应用开发中必不可少的步骤,用于确保用户输入的数据符合预设的规则和格式,从而防止非法数据...

    Struts编程之struts校验源代码

    通过这个"strutsDemo03"项目,你可以学习如何集成和使用Struts的验证功能,理解数据验证流程,并掌握在实际开发中如何实现有效的数据校验。同时,这也为你提供了实践机会,加深对MVC模式和Struts框架的理解。记得在...

    STRUTS 2完全学习手册.pdf

    《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对...

    struts2学习心得

    ### Struts2学习心得:数据类型转换与校验方式 #### 一、Struts2框架简介 Struts2是基于MVC(Model-View-Controller)设计模式的Java Web开发框架,它为开发者提供了一种简洁高效的方式来构建复杂的Web应用程序。...

Global site tag (gtag.js) - Google Analytics