`

基于Spring MVC的Web应用开发(10) - Validation

 
阅读更多

本文介绍SpringMVC的验证(validation),在Convert一文中,我们知道SpringMVC能很方便的将提交的参数转成(convert)自定义的JavaBean,现在加入对JavaBean的验证,比如要求JavaBean的属性number(private Integer number)不允许为null且最大为5,属性date(private Date date)满足时间是未来的(今天以后的日期)。为此,pom.xml中需要添加两个依赖:

	<!-- JSR 303 with Hibernate Validator -->
	<dependency>
		<groupId>javax.validation</groupId>
		<artifactId>validation-api</artifactId>
		<version>1.0.0.GA</version>
	</dependency>
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-validator</artifactId>
		<version>4.1.0.Final</version>
	</dependency>

 javax.validation.validation-api-1.0.0.GA.jar是一个标准,只有接口方法(以javax开头的包一般都是接口包,业界定义的一些标准,比如servlet-api-2.5.jar中的javax.servlet.HttpServletRequest),还有一个是Hibernate提供的实现包org.hibernate.hibernate-validator-4.1.0.Final。

增加一个Controller,ValidationController:

package org.springframework.samples.mvc.validation;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ValidationController {

	// enforcement of constraints on the JavaBean arg require a JSR-303 provider on the classpath
	
	@RequestMapping("/validate")
	public @ResponseBody String validate(@Valid JavaBean bean, BindingResult result) {
		if (result.hasErrors()) {
			return "Object has validation errors";
		} else {
			return "No errors";
		}
	}

}

和一个JavaBean:

package org.springframework.samples.mvc.validation;

import java.util.Date;

import javax.validation.constraints.Future;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;

public class JavaBean {
	
	@NotNull
	@Max(5)
	private Integer number;

	@NotNull
	@Future
	@DateTimeFormat(iso=ISO.DATE)
	private Date date;

	public Integer getNumber() {
		return number;
	}

	public void setNumber(Integer number) {
		this.number = number;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

} 

  @NotNull、@Future就是javax.validation.validation-api-1.0.0.GA.jar中定义的注解,满足之前说到的需求。

ValidationController的validate方法绑定了一个参数BindingResult result,通过这个变量就可以得到具体的验证信息,比如在validate方法中,如果验证不通过(result.hasErrors()),返回给浏览器文本"Object has validation errors"。

 

1. 访问"http://localhost:8080/web/validate",浏览器显示"Object has validation errors",number和date不能为空;

 

2. 访问"http://localhost:8080/web/validate?number=1",浏览器显示"Object has validation errors",date不能为空;

 

3. 访问"http://localhost:8080/web/validate?number=1&date=2012-03-31",浏览器显示"Object has validation errors",非今天以后的日期;

 

4. 访问"http://localhost:8080/web/validate?number=1&date=2012-04-01",浏览器显示"No errors";

 

5. 访问"http://localhost:8080/web/validate?number=6&date=2012-04-01",浏览器显示"Object has validation errors",number不能大于5;

 

分享到:
评论

相关推荐

    spring-mvc-validation:用于注释的高级验证技术的Spring MVC Web项目

    在这里,我们提供了一个用于理解Spring MVC Web应用程序的简单项目,并介绍了Spring-mvc-validation批注的高级概念。 在这里,通过带有批注的高级验证技术的详细概念,我们还显示了以下功能: 模型-视图-控制器...

    org.springframework.web.servlet-3.0.5.RELEASE.jar

    spring mvc 开发的必须有的架包org.springframework.web.servlet-3.0.5.RELEASE.jar

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar  这个...

    spring4.3.0lib

    lib内容: 1\spring-aop-4.3.0.RELEASE.jar 2\spring-aspects-4.3.0.RELEASE.jar ...19\spring-webmvc-4.3.0.RELEASE.jar 20\spring-websocket-4.3.0.RELEASE.jar 21\validation-api-1.1.0.Final.jar

    jwbds-day-8-custom-phone-validation:通过电话验证-使用Spring MVC的Java Web后端开发模块

    jwbds-day-8-custom-phone-validation:通过电话验证-使用Spring MVC的Java Web后端开发模块

    Getting.started.with.Spring.Framework.2nd.Edition1491011912.epub

    Chapter 10 – Spring Web MVC basics Chapter 11 – Validation and data binding in Spring Web MVC Chapter 12 –Developing RESTful web services using Spring Web MVC Chapter 13 – More Spring Web MVC – ...

    spring jar 包详解

    (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...

    spring4.3.9相关jar包

    spring-web.jar(必须) :这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。...

    spring杂谈 作者zhang KaiTao

    1. spring杂谈[原创] 1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 ...1.32 Spring3 Web MVC下的数据类型转换(第一篇)——《跟我学Spring3 Web MVC》抢先看 1.33 Spring 注入集合类型

    spring4.1核心包

    包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...

    最新最全的spring开发包

     这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) spring-webmvc.jar 这个...

    spring-web-rss-channels:使用Spring MVC和JSP构建的全栈RSS阅读器Web应用程序。 它使用诸如Spring,JPA,Bootstrap,Apache Tiles,JSP等库。还有一个称为Checkstyle的静态代码分析工具

    该项目旨在介绍如何创建Spring MVC + JPA / Hibernate Web应用程序。 目录 先决条件 图书馆 图书馆名称 描述 Spring使每个人都可以更快,更轻松和更安全地进行Java编程。 Hibernate ORM使开发人员可以更轻松地编写...

    spring和hibernate__jar包,详细说明看jar包列表

    以下是jar包列表 activation-1.1.jar ...spring-webmvc-3.1.1.RELEASE.jar standard-1.1.2.jar stax-api-1.0-2.jar transaction-api-1.1.jar validation-api-1.0.0.GA.jar xmemcached-1.3.7.jar xml-apis-1.0.b2.jar

    Spring主流jar包大全

    spring-webmvc-4.1.9.RELEASE.jar standard-1.1.2.jar stax-api-1.0.1.jar thumbnailator-0.4.2.jar UserAgentUtils-1.13.jar validation-api-1.1.0.Final.jar xercesImpl-2.8.1.jar xml-apis-1.3.04.jar xml-apis-...

    Mall4j商城系统 /JAVA商城系统 商城源码 仅限学习使用 如需商用购买商业版源码

    Spring Security web 3.0.4 web应用安全防护 satoken 1.34.0 一个轻量级 Java 权限认证框架,取代spring oauth2 MyBatis 3.5.10 ORM框架 MyBatisPlus 3.5.3.1 基于mybatis,使用lambda表达式的 spring-doc 2.0.0 ...

    spring-boot-reference.pdf

    27.1. The “Spring Web MVC Framework” 27.1.1. Spring MVC Auto-configuration 27.1.2. HttpMessageConverters 27.1.3. Custom JSON Serializers and Deserializers 27.1.4. MessageCodesResolver 27.1.5. Static...

    spring framework4

    Spring MVC and Spring WebFlux web frameworks Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache. Languages: Kotlin, Groovy, dynamic languages. Minimum requirements JDK 8+ for Spring...

    mybatis和springmvc的jar包

    aopalliance-1.0.jar asm-3.3.1.jar aspectjweaver-1.7.1.jar c3p0-0.9.1.jar cglib-2.2.2.jar commons-dbcp-1.2.2.jar ...spring-webmvc-3.2.0.RELEASE.jar standard.jar validation-api-1.0.0.GA.jar

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring Web Reactive 在 spring-webmvc 模块中现有的(而且很流行)Spring Web MVC旁边的新的 spring-web-reactive 模块中。 请注意,在 Spring5 中,传统的 SpringMVC 支持 Servlet3.1 上运行,或者支持 JavaEE7 的...

    关于常用的整合ssm框架

    spring-webmvc-4.3.11.RELEASE.jar 【数据校验】 classmate-0.8.0.jar hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar jboss-logging-3.1.1.GA.jar validation...

Global site tag (gtag.js) - Google Analytics