Spring MVC中使用 hibernate-validtor进行服务端验证
2017-10-09 17:41
453 查看
搭好Spring MVC的基本框架,并且可以成功运行起来
…此步骤省略引入依赖包
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency>
在Spring MVC驱动配置中加上hibernate-validator
<!-- Enables the Spring MVC @Controller programming model --> <mvc:annotation-driven validator="validator"></mvc:annotation-driven> <!-- 校验器 --> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <!-- hibernate校验器 --> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties --> <!-- <property name="validationMessageSource" ref="messageSource" />--> </bean>
建立需要服务端验证的Bean
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; public class UserVO { @NotEmpty(message = "用户名不能为空") private String userName; @Length(min=3, max=15,message = "密码长度不对") private String userPassword; //setters and getters … }
在Controller中进行校验,并且返回绑定参数异常情况
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import top.yuyufeng.sample.web.vo.UserValidVO; import javax.validation.Valid; @Controller public class LoginValidController { private static UserValidVO userValidVO = new UserValidVO(); /** * 跳转到登录界面 * * @return */ @RequestMapping(value = "/login-valid", method = RequestMethod.GET) public String toLogin(Model model) { model.addAttribute("userValidVO", userValidVO); //必须添加 不然Spring form标签会报错 return "login-valid"; } @RequestMapping(value = "/doValidLogin", method = RequestMethod.POST) public String userLogin(@Valid UserValidVO userValidVO, BindingResult br, Model model) { if (!br.hasErrors()) { model.addAttribute("loginValid", "success"); } return "login-valid"; } }
前端页面表单,和异常展示(使用http://www.springframework.org/tags/form标签)
<%-- Created by IntelliJ IDEA. User: yuyufeng Date: 2017/9/28 Time: 9:18 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <html> <head> <title>login</title> <%@ include file="include/head.jsp" %> <style> .error-area { color: red; } </style> </head> <body> <hr/> <%--Spring form 表单--%> <form:form id="my-form" method="post" modelAttribute="userValidVO" action="/doValidLogin"> 用户登录 <table> <tr> <td><form:label path="userName">用户名:</form:label></td> <td><form:input path="userName"/></td> <td><form:errors path="userName" cssClass="error-area"/></td> </tr> <tr> <td><form:label path="userPassword">密码:</form:label></td> <td><form:input path="userPassword"/></td> <td><form:errors path="userPassword" cssClass="error-area"/></td> </tr> <tr> <td> <button type="submit">立即登录</button> </td> <td> <button type="reset">重置</button> </td> </tr> <tr> <td><c:out value="${loginValid}"></c:out></td> </tr> </table> </form:form> </body> </html>
摘录
Hibernate Validator 是 Bean Validation 的参考实现 。Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。
1. Bean Validation 中内置的 constraint
注解 | 作用 |
---|---|
@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 | 被注释的元素必须是一个将来的日期 |
@Pattern(value) | 被注释的元素必须符合指定的正则表达式 |
注解 | 作用 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length(min=, max=) | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range(min=, max=) | 被注释的元素必须在合适的范围内 |
@NotBlank | 被注释的字符串的必须非空 |
@URL(protocol=,host=, port=, regexp=, flags=) | 被注释的字符串必须是一个有效的url |
@CreditCardNumber | 被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性 |
@ScriptAssert(lang=, script=, alias=) | 要有Java Scripting API 即JSR 223 |
@SafeHtml(whitelistType=, additionalTags=) | classpath中要有jsoup包 |
@NotNull | 任何对象的value不能为null |
@NotEmpty | 集合对象的元素不为0,即集合不为空,也可以用于字符串不为null |
@NotBlank | 只能用于字符串不为null,并且字符串trim()以后length要大于0 |
相关文章推荐
- 使用hibernate-validator进行验证时与tomcat产生的方法冲突问题【NoSuchMethodError】
- spring mvc 使用jsr-303 @Valid实现bean的字段验证
- .net使用FluentValidation进行服务端验证。
- jsData 使用教程(五) 对输入数据进行验证(服务端验证)
- spring security使用hibernate进行查询数据库验证
- Unity中使用协程进行服务端数据验证手段
- JData 使用教程 对输入数据进行验证(服务端验证)
- spring MVC 使用 hibernate validator验证框架,国际化配置
- spring mvc 通过bean获取form的参数和并且进行服务器验证 ,而且支持多个文件上传的用法。html使用form_data
- Spring Mvc那点事---(40)SSM服务框架使用aop进行数据验证
- spring mvc 使用jsr-303 @Valid实现bean的字段验证
- spring mvc 使用jsr-303 @Valid实现bean的字段验证
- 使用 纯JQuery 进行 表单 验证
- 使用JSR-303进行校验 @Valid
- 使用RSA进行注册码验证--c#
- 整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享
- Spring整合hibernate:3、使用XML进行声明式的事务管理
- hibernate 级联验证-@Valid (JDK1.7)
- hibernate中使用HQL进行数据库查询
- 解决使用HIBERNATE对ORACLE数据库中数据进行排序分页错乱的问题