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

    xiaoxiao2026-06-12  4

    需添加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 验证:参数不存在  

    转载请注明原文地址: https://ju.6miu.com/read-1310458.html
    最新回复(0)