本文介绍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;
分享到:
相关推荐
Resin对Spring MVC和Hibernate Validation的支持,使得开发者能够在企业级应用开发中享受到高效的性能和强大的验证功能。理解如何在Resin上配置和使用这些技术,对于Java Web开发者来说是至关重要的。通过熟练掌握...
Spring MVC 是 Spring 框架的一个重要组成部分,用于构建基于 Java 的 Web 应用程序。这个官方中文文档详细地介绍了如何使用 Spring MVC 来开发高效、可维护的 MVC(Model-View-Controller)架构的应用。Spring MVC ...
在基于Spring MVC的web应用中,我们将深入探讨以下几个关键知识点: 1. **MVC模式**:M(Model)代表业务逻辑,V(View)代表用户界面,C(Controller)负责协调Model和View。Spring MVC 将这三者解耦,使得开发更...
Spring MVC是Spring框架的核心部分,主要用于构建Web应用程序。本教程以英文形式呈现,深入浅出地讲解了Spring MVC的各个关键概念和技术。 1. **Spring MVC简介** Spring MVC是一种轻量级的模型-视图-控制器(MVC...
Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。在这个部分,我们将深入探讨Spring MVC在Web开发中的应用,特别是在"Spring MVC-Web(4)"这个阶段涉及的关键概念和技术。 首先,...
在Spring框架中,注解和Validation是两个关键的组件,它们极大地简化了应用程序的开发过程。Validation主要用于数据验证,而Spring注解则提供了声明式编程的能力,使得代码更加简洁、可读性更强。这里我们将详细探讨...
综上所述,`spring-webmvc`是Spring MVC的核心,它通过一系列组件和机制提供了强大的Web应用开发能力。通过合理的配置和使用,可以构建出高效、灵活的企业级Web应用。在SSM框架中,`spring-webmvc`与Spring的核心...
Spring Web MVC是Spring框架的一个重要模块,主要用于构建Web应用程序的后端控制器。在这个"spring-webmvc-3.2.5.RELEASE"版本中,我们聚焦于Spring 3.2.5这一稳定版本,它提供了丰富的功能和改进,以支持开发者构建...
Spring Web MVC是Spring框架的重要组成部分,专为构建基于Java的Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构模式的实现,允许开发者以一种结构化和模块化的方式组织代码,提高代码的可维护性和可测试性...
Spring MVC 是一个强大的Java web开发框架,用于构建高效、可维护和模块化的Web应用程序。它基于Spring框架,提供了模型-视图-控制器(MVC)架构模式,简化了从前端到后端的数据处理流程。本实例将深入探讨如何实现...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要负责处理 Web 请求和响应。这个"SpringMVC jar 包合集"包含了开发 Spring MVC 应用所需的所有核心库,使得开发者可以快速搭建一...
总的来说,Spring MVC 4.2.3版本为开发者提供了强大且灵活的Web开发工具,帮助他们构建高效、可扩展的Web应用。它的特性涵盖了从请求处理到响应生成的整个流程,确保了良好的开发体验和高质量的应用程序。在实际工作...
Spring Web MVC 4.3.6.RELEASE是互联网应用开发的重要工具,其丰富的特性和优化的设计使得开发者能够高效地构建复杂的应用程序。通过理解并熟练掌握上述核心概念和技术,可以极大地提升开发效率,打造出稳定、高性能...
在这里,我们提供了一个用于理解Spring MVC Web应用程序的简单项目,并介绍了Spring-mvc-validation批注的高级概念。 在这里,通过带有批注的高级验证技术的详细概念,我们还显示了以下功能: 模型-视图-控制器...
Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建高效、灵活且可测试的 Web 应用程序的模型-视图-控制器(MVC)框架。Spring MVC 提供了丰富的功能,使得开发者能够更加专注于业务逻辑,而不是底层的实现...
Spring MVC和Web Flow是两种广泛应用于Java Web开发的技术。Spring MVC是Spring框架的一部分,主要用于构建高效、可维护的Web应用程序,而Web Flow则是一个用于管理用户交互流程的强大工具,尤其适用于处理复杂的...
在本项目中,我们主要探讨的是如何将Spring MVC 3.0、MyBatis 3 和 Freemarker 2.3 这三个强大的技术框架整合在一起,以构建一个高效且灵活的Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...
Spring MVC 是 Spring 框架的一个模块,它为创建 Web 应用程序提供了一种模型-视图-控制器(MVC)架构。Spring MVC 提供了处理HTTP请求、数据绑定、验证以及与Spring其他模块的无缝集成,使得开发者可以更专注于业务...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的重要组成部分。Spring 框架以其依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)为核心,而 Spring...
【标题】"maven与spring MVC"涉及到的是Java Web开发中的两个关键组件——Maven和Spring MVC,它们在构建和管理复杂项目时起着至关重要的作用。Maven是一个项目管理和综合工具,它通过提供一个标准化的构建过程和...