SpringMVC进行数据校验

SpringMVC进行数据校验

SpringMVC本身没有数据校验功能,需要借助hibernate的校验框架。

  • 在vo对象的属性上打上相应验证注解
  • 配置validateMessage.properties文件,用来存储错误提示信息。
  • 在springmvc.xml中开启扫描开启校验注解注册校验对象,注册校验对象需要的相关设置对象(关联validateMessage.properties路径等设置)。
  • 在control方法的对象形参前加上验证注解标记,就可以在对该对象进行校验。校验的返回消息可以通过BindingResult br 来获得。
  • 以及将 BindingResult br 对象的消息提取出来。

举例

在vo对象的属性上打上相应验证注解

package com.bb.pojo;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;

public class User {
	@NotBlank(message="账号不能为空")
	private Integer id;
	
	@NotBlank(message="账号不能为空")
	@Size(max=6,min=2,message="账号长度2-6位")
	private String name;
	
	@NotBlank(message="地址不能为空")
	@Size(max=6,min=2,message="地址长度2-6位")
	private String address;
	
	@Max(value=100,message="年龄最大100")
	@Min(value=1,message="年龄最小1")
	private int age;
	

}

列举一些验证注解

注解名作用
@Pattern(value)被注释的元素必须符合指定的正则表达式
@Valid被注释的元素是一个对象,需要检查此对象的所有字段值
@Null被注释的元素必须为 null
@NotNull被注释的元素必须不为 null
@AssertTrue被注释的元素必须为 true
@AssertFalse被注释的元素必须为 false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future被注释的元素必须是一个将来的日期

配置validateMessage.properties文件

用来存储错误提示信息。

USER_NAME_NOTEMPTY=账号不能为空
USER_NAME_SIZE=username size 2 - 6

这些常量可以作为验证注解的提示值来使用

在springmvc.xml中配置验证对象

<!-- 开启扫描 -->
	<context:component-scan base-package="com.bb.controller"></context:component-scan>
	<!-- 开启SpringMVC注解 -->
	<mvc:annotation-driven validator="validator" ></mvc:annotation-driven>
	
	<!-- hibernate 校验 -->
	<!--添加对JSR-303验证框架的支持  -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <!--设置则默认为classpath下的 ValidationMessages.properties -->
        <property name="validationMessageSource" ref="validatemessageSource"/>
    </bean>
   
    <bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
        <property name="basename" value="classpath:validateMessage"/>  
        <property name="fileEncodings" value="utf-8"/>  
        <property name="cacheSeconds" value="120"/>  
    </bean>	

第一个bean引用了第二个bean,spring开启注解引用了第一个bean。


在获取对象的前加上启用注解 @Validated ,获取验证信息对象 BindingResult

@RequestMapping("/add")
	public String add(@Validated User user,BindingResult br,Model m){
		List<ObjectError> allErrors = br.getAllErrors();
		if(allErrors!= null && allErrors.size() > 0){
			for (ObjectError objectError : allErrors) {
				System.out.println(objectError.getDefaultMessage());
				
			}
			m.addAttribute("errors", allErrors);
		}
		return "/user.jsp";
	}

总结 :通过以上注解,配置。获取到的对象就经过了验证,并获得了验证信息。实际开发中,属性的验证规则需要动态改变(不同的请求,同一个属性会有不同的验证规则)。就需要使用验证分组

项目打包:(exlipse) 提取码:comk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值