spring mvc 采用 jsr303 bean validation 校验框架

这是一个规范,定义了一些元素来进行bean的数据校验,比如 你的model有一个 user.java ,里面有一个email,当用户注册时候要验证email是否合法。 一般做法是js前端校验,但是不安全,作为完整安全解决方案,我们必须后端校验。

表 1. Bean Validation 中内置的 constraint

Constraint 详细信息

@Null 被注释的元素必须为 null

@NotNull 被注释的元素必须不为 null

@AssertTrue 被注释的元素必须为 true

@AssertFalse 被注释的元素必须为 false

@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@Size(max, min) 被注释的元素的大小必须在指定的范围内

@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内

@Past 被注释的元素必须是一个过去的日期

@Future 被注释的元素必须是一个将来的日期

@Pattern(value) 被注释的元素必须符合指定的正则表达式hibernate对这个规范做了实现和扩展;

Constraint 详细信息

@Email 被注释的元素必须是电子邮箱地址

@Length 被注释的字符串的大小必须在指定的范围内

@NotEmpty 被注释的字符串的必须非空

@Range 被注释的元素必须在合适的范围内

2,jsr303实现

目前实现较好的 validation有 Hibernate Validator,它 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。 可以独立使用,哪怕你的架构是 spring mvc + ibatis 也可以单独使用此校验框架。 好处看下面就知道了:

3,spring mvc中如何使用jsr303 validation

1)首先要基于annotion注解驱动,配置spring中配置

<mvc:annotation-driven />

2)相关jar包,如果用的是maven

[html]

<repositories>

<repository>

<id>JBoss repository</id>

<url>http://repository.jboss.org/nexus/content/groups/public/</url>

</repository>

</repositories>

<properties>

<spring.version>3.0.5.RELEASE</spring.version>

</properties>

<dependencies>

<!-- Spring 3 dependencies -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- Hibernate Validator -->

<dependency>

<groupId>org.hibernate</groupId>

<artifactId>hibernate-validator</artifactId>

<version>4.2.0.Final</version>

</dependency>

</dependencies>

如果不是maven,单独下来hibernate-validator.jar到工程即可。

3)在model(数据交互的一些对象,或者vo)中声明

[java]

@NotEmpty(message="名字不能为空")

private String name;

@NotEmpty(message="email不能为空")

@Email(message="email格式不合法")

private String email;

[java]

4)在controller中使用@valid 和BindingResult :

[java] view plaincopy

<span style="font-size:18px;">@RequestMapping(value="/test")

@ResponseBody

private User test(@Valid User u,BindingResultresult){

if(result.hasErrors()){//这个是spring validation校验后返回的结果对象

//如果校验失败,你要做什么事情

String code = result.getFieldError().getCode();//验证出错的那个类型名称 比如NotEmpty

result.getFieldError().getDefaultMessage());//出错的信息

return m;

}else{

return null;

}

}</span>

5)页面上如果需要显示错误,要么通过el表达式取model中值,也可以使用spring form标签:

<form:errors path="*" cssClass="errorblock" element="div" />

最后,我使用的是spring mvc+ mybatis, hibernate validation是可独立的一块和orm并无太大关系。 ibatis在validation规范并没有实现。

时间: 2024-11-10 20:17:31

spring mvc 采用 jsr303 bean validation 校验框架的相关文章

JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践

任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问题. 为了避免这样或那样的情况发生,最好是将验证逻辑与相应的数据模型进行绑定. 1. JSR-303 Bean Validation JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Proces

在Spring MVC中使用Apache Shiro安全框架

我们在这里将对一个集成了Spring MVC+Hibernate+Apache Shiro的项目进行了一个简单说明.这个项目将展示如何在Spring MVC 中使用Apache Shiro来构建我们的安全框架. [TOC] 阅读文章前,您需要做以下准备: Maven 3环境Mysql-5.6+JDK1.7+git环境git.oschina.net帐号Apache Tomcat 7+您熟练掌握的编辑工具,推荐使用InterlliJ IDEA 14+开始项目地址git.oschina.net 项目地

JSR303 Bean Validation 技术规范特性概述

概述 Bean Validation 规范 Bean 是 Java Bean 的缩写,在 Java 分层架构的实际应用中,从表示层到持久化层,每一层都需要对 Java Bean 进行业务符合性验证,如图 1 所示.然而对于同一个 Java Bean 的对象,在每一层都需要实现同样的验证逻辑时,这将是一项耗时且容易诱发错误的做法.Bean Validation 规范的目标就是避免多层验证的重复性.事实上,开发者更倾向于将验证规则直接放到 Java Bean 本身,使用注解的方式进行验证规则的设计.

spring mvc官网下最新jar搭建框架-静态资源访问处理-注解-自动扫描

1.从官网下载spring相关jar http://spring.io/projects 点击SPRING FRAMEWORK 2.从GitHtb下载 3.向下滚动找到Downloading Artifacts 点击 4.点击Artifacts-->libs-release-local-->org-->springframewor-->spring 5.选中一个自己需要的版本(我选了4.2.5) 6.下载后的文件 配置文件的规范约束下面文件夹有的都可以写(我用到了beans, co

No mapping found for HTTP request with URI *(Spring mvc采用注释方式生成uri路径访问不到问题)

@Controller @RequestMapping("/Person") public class PersonManagerService { private Logger log = LoggerFactory.getLogger(PersonManagerService.class); @Resource private PersonManager myPersonManager; public PersonManager getMyPersonManager() { ret

Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境

项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建一个Maven工程: 选择webapp 随便填写了: 创建完成之后工程会报错: 接下来怎么解决的? 选中项目点击右键,选择“Properties”  进入下面界面: 选中project facets ,然后将java版本改成 你的jdk版本,或者1.6以上版本. 之后选择 java build pa

Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】

项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境.Tomcat环境.需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备): 开始创建工程: 1.创建一个Maven工程: 选择webapp 随便填写了: 创建完成之后工程会报错: 接下来怎么解决的? 选中项目点击右键,选择"Properties"  进入下面界面: 选中project facets ,然后将java版本改成 你的jdk版本,或者1.6以上版本. 之后选择 java bui

Spring MVC系列-(2) Bean的装配

2. Bean的装配 Spring容器负责创建应用程序中的bean,并通过DI来协调对象之间的关系.Spring提供了三种主要的装配机制: XML显式配置: Java配置类进行显式配置: 隐式的bean发现机制和自动装配. 推荐使用Java配置类结合隐式的自动bean扫描机制. 2.1 通过XML装配Bean XML配置是Spring刚出现时的主要配置方式.这种方式需要手动编写XML,并在其中配置好Bean的定义. 创建XML并定义Bean 下面是Person类的定义, public class

JSR-303规范,Bean Validation

一: JSR 303是JAVA EE 6中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator,此实现与Hibernate ORM没有任何关系.JSR 303用于对Java Bean中的字段的值进行验证. 本教程翻译自Hibernate Validator 4.0 GA指南,并参考JSR 303的规范,本着尽量不用JSR规范之外的特性,文档在编写时尽量不提及底层实现Hibernate Validator,而是关注Bean Validation规范