SpringMVC教程--Validation校验
来源:互联网 发布:儿童安全座椅 知乎 编辑:程序博客网 时间:2024/05/16 08:52
Validation校验
b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的,本节主要学习springmvc实现控制层添加校验。
Spring3支持JSR-303验证框架,JSR-303是JAVA EE 6中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator(与Hibernate ORM没有关系),JSR 303用于对Java Bean中的字段的值进行验证。
1.1 需求
对商品信息进行校验,是否必须,输入数据合法性。
1.2 加入jar包
1.3 配置validator
<!-- 校验错误信息配置文件 --><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><property name="basenames"> <list> <value>classpath:CustomValidationMessages</value> </list> </property><property name="fileEncodings" 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" /><!-- 如果不指定则默认使用classpath下的ValidationMessages.properties --><property name="validationMessageSource" ref="messageSource" /></bean>
1.4 将validator加到处理器适配器
配置方式1:
<!-- 自定义webBinder --><bean id="customBinder"class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer"><property name="validator" ref="validator" /></bean>
<!-- 注解适配器 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="webBindingInitializer" ref="customBinder"></property></bean>
配置方式2:
<mvc:annotation-driven validator="validator"> </mvc:annotation-driven>
1.5 添加验证规则
public class Items { private Integer id; @Size(min=1,max=30,message="{item.name.length.illigel}") private String name; @NotEmpty(message="{pic.is.null}") private String pic;
1.6 错误消息文件CustomValidationMessages
item.name.length.illigel=商品在名称在1到3个字符之间
pic.is.null=请上传图片
如果在eclipse中编辑properties文件无法看到中文则参考“Eclipse开发环境配置-indigo.docx”添加propedit插件。
1.7 捕获错误
修改Controller方法:
// 商品修改提交@RequestMapping("/editItemSubmit")public String editItemSubmit(@Validated @ModelAttribute("item") Items items,BindingResult result,@RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)throws Exception {//如果存在校验错误则转到商品修改页面if (result.hasErrors()) {List<ObjectError> errors = result.getAllErrors();for(ObjectError objectError:errors){System.out.println(objectError.getCode());System.out.println(objectError.getDefaultMessage());}return "item/editItem";}
注意:添加@Validated表示在对items参数绑定时进行校验,校验信息写入BindingResult中,在要校验的pojo后边添加BingdingResult, 一个BindingResult对应一个pojo,且BingdingResult放在pojo的后边。
商品修改页面:
页头:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
在需要显示错误信息地方:
<spring:hasBindErrors name="item"><c:forEach items="${errors.allErrors}" var="error">${error.defaultMessage }<br/></c:forEach></spring:hasBindErrors>
说明:
<spring:hasBindErrors name="item">表示如果item参数绑定校验错误下边显示错误信息。
1.8 分组校验
如果两处校验使用同一个Items类则可以设定校验分组。
定义分组:
分组就是一个标识,这里定义一个接口:
public interface ValidGroup1 { }public interface ValidGroup2 { }
指定分组校验:
public class Items { private Integer id;//这里指定分组ValidGroup1,此@Size校验只适用ValidGroup1校验 @Size(min=1,max=30,message="{item.name.length.illigel}",groups={ValidGroup1.class}) private String name; // 商品修改提交@RequestMapping("/editItemSubmit")public String editItemSubmit(@Validated(value={ValidGroup1.class}) @ModelAttribute("item") Items items,BindingResult result,@RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)throws Exception {
在@Validated中添加value={ValidGroup1.class}表示商品修改使用了ValidGroup1分组校验规则,也可以指定多个分组中间用逗号分隔,
@Validated(value={ValidGroup1.class,ValidGroup2.class })
- SpringMVC教程--Validation校验
- SpringMVC—Validation校验
- springmvc注解开发-validation校验
- springMVC中validation校验案例
- springmvc使用校验框架validation校验
- 【SpringMVC整合MyBatis】validation校验-分组校验
- springmvc注解开发-validation校验-分组校验
- springmvc服务端校验hibernate validation配置
- springmvc使用Hibernate的校验框架validation
- springmvc利用validation框架实现数据校验
- springmvc使用hibernate-validation校验器异常
- 【SpringMVC整合MyBatis】validation校验-商品修改校验
- springmvc注解开发-validation校验-商品修改校验
- SpringMVC validation完成后端数据校验(较全面)
- 使用SpringMVC数据验证框架validation做数据校验
- springmvc(十七)springmvc注解开发-validation校验-商品修改校验
- SpringMVC结合Validation api 和Hibernate validation进行校验不提示验证错误信息
- SpringMVC Validation
- 嵌入式Linux开发环境搭建
- MYSQL 常用命令
- Linux进程管理器
- AES加密解密工具类
- webpack与browser-sync热更新原理深度讲解
- SpringMVC教程--Validation校验
- win10 不安装oracle plsql连接远程oracle
- 进程.vs 线程.
- android学习(二十二) 传输数据使用Sync Adapters
- 【图像处理】基于opencv3.0使用StereoBM计算视差
- Android基础—Canvas API详解
- Base64加密解密工具类
- 在C#中,Json的序列化和反序列化的几种方式
- Java学习----day10——(1)API篇之GUI