SpringMVC 学习笔记3

来源:互联网 发布:c 游戏编程基础 编辑:程序博客网 时间:2024/06/03 16:59

    • 一导包
    • 二配置错误信息定义文件springmvc_validateproperties
    • 三配置springmvcxml文件
    • 四定义校验规则
      • 验证注解
      • 验证分组
      • 使用示例
    • 五如果数据是中文需要定义过滤器

一、导包

Jar包:
hibernate-validator-4.3.0.Final
jboss-logging-3.1.0.CR2
validation-api-1.0.0.GA

Maven:

二、配置错误信息定义文件springmvc_validate.properties

user.nameIsInvalidate=用户名长度应该在310之间user.hobbyIsInvalidate=兴趣至少选一个,至多选3

三、配置springmvc.xml文件

<!--错误信息资源--><bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">    <!--资源文件列表-->    <property name="basenames">        <list>            <!-- 注意:这里没有后缀名properties -->            <value>classpath:springmvc_validate</value>        </list>    </property>    <!--资源文件编码格式-->    <property name="defaultEncoding" value="utf-8"/>    <!--对资源文件内容缓存时间-->    <property name="cacheSeconds" value="120"/></bean><!--校验器--><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">    <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>    <property name="validationMessageSource" ref="messageSource"/></bean><!--使用校验器--><mvc:annotation-driven validator="validator"/>

四、定义校验规则

  1. 在POJO类的属性上添加验证注解
  2. 控制方法的POJO参数注解@Validated,并且后面紧跟一个类型为BindingResult参数

    一个BindingResult对应一个POJO形参,并且需要紧跟在形参后面。
    如果验证失败,通过遍历BindingResult.getAllErrors[i].getDefaultMessage获取错误信息。

验证注解

@Null 被注解的元素必须为null,对于基本类型(如int,float)肯定校验失败
@NotNull 被注解的元素必须不为null,对于基本类型肯定校验成功
@AssertTrue 被注解的元素必须为true
@AssertFalse 被注解的元素必须为false
@Min(int value) 被注解的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(int value) 被注解的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(String value) 被注解的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(String value) 被注解的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min) 被注解的集合或字符串的长度必须在指定的范围内,最好用在集合上(如果列表为Null,会跳过该验证)
@Digits(integer,fraction) 被注解的元素必须是一个数字,其整数位数不大于integer,小数位数不大于fraction
@Past 被注解的元素必须是一个过去的日期
@Future 被注解的元素必须是一个将来的日期
@Pattern(regex,flag) 被注解的元素必须符合指定的正则表达式
@NotBlank 被注解的字符串必须非null,且长度大于0,且调用trim()后长度大于0(即要求有内容,不能只有空格)
@Email 被注解的元素必须是电子邮箱地址
@Length(min,max) 被注解的字符串的大小必须在指定的范围内
@NotEmpty 被注解的字符串的必须不为null,且长度大于0
@Range(min,max) 被注解的元素必须在合适的范围内

验证分组

目的是构建业务与验证之间的多对多关系,使得不同的页面对应不同的验证,更加灵活。例如:注册需要验证user的name,pass,sex,email是否符合要求,登录只需验证name,pass是否为空即可。如果没有分组,那么注册登录要不就是都验证所有输入的合法性,要不就是都仅仅验证非空,不灵活。使用:    1. 定义若干个接口作为分组的标识(接口什么也不用写)    2. POJO类的相关属性的验证注解的参数groups填上接口    3. 控制方法的POJO形参的@Validated的参数value填上接口

使用示例

// TODO

五、如果数据是中文,需要定义过滤器

<filter>    <filter-name>characterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>        <param-name>encoding</param-name>        <param-value>utf-8</param-value>    </init-param></filter><filter-mapping>    <filter-name>characterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>