Spring MVC基于hibernate validator的数据验证示例

需添加jar包:

classmate-0.8.0.jar 不添加出现:java.lang.ClassNotFoundException: com.fasterxml.classmate.Filter

commons-logging-1.2.jar 和 jboss-logging-3.1.3.ga.jar 日志相关jar包

hibernate-validator-5.2.4.Final.jar 和 validation-api.1.1.0.Final.jar  支持注解式校验

spring相关jar包

注:当使用hibernate-validator-4.3.2.Final.jar 和 validation-api.1.0.0.GA.jar 支持校验时,不导入classmate.jar,也可正常执行校验

当hibernate-validator.jar 和 validation-api.jar 版本不对应时,会报错。如导入:hibernate-validator-4.3.2.Final.jar 和 validation-api.1.1.0.Final.jar

例:

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context"  
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/mvc
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">   
  	
  	<!-- 启动注解支持 -->
  	<mvc:annotation-driven />

	<!-- 扫描指定包,并注册相应组件 -->  	
  	<context:component-scan base-package="com.valid" />
  	
</beans>

验证实体类:

package com.valid.pojo;

import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;

public class People {

	//name字段不为空,且长度在3-8之间
	@NotEmpty
	@Size(min=3,max=8)
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

控制类:

package com.valid.controller;

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;

import com.valid.pojo.People;

@Controller
public class FirstController {
	
	@RequestMapping("/addPeople")
	public @ResponseBody String addPeople(@Valid People p,BindingResult result)
	{
		System.out.println("people's name:" + p.getName());
		if(result.hasErrors())
		{
			return "0";
		}
		return "1";
	}
}
@Valid注解所标注的就是要检验的参数,BindingResult是检验结果。 BindingResult必须紧跟在验证参数之后,即@Valid修饰参数后。否则报错

测试:

请求地址:http://localhost:8080/Test/addPeople?name=1234

结果:页面显示1,控制台打印:people's name:1234    参数正确

请求地址:http://localhost:8080/Test/addPeople?name=1       

结果:页面显示0,控制台打印:people's name:1   验证:  参数长度不为3-8

请求地址:http://localhost:8080/Test/addPeople?name=  

结果:页面显示0,控制台打印:people's name:   验证:参数值为空


请求地址:http://localhost:8080/Test/addPeople   

结果:页面显示0,控制台打印:people's name: null 验证:参数不存在
 








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值