Springmvc_validation 效验器

springmvc-validation效验器的使用介绍

  对于任何一个应用来说,都会做数据的有效性效验,但是只在前端做并不是很安全,考虑到安全性這个时候会要求我们在服务端也对数据进行有效验证,springmvc自身对数据在服务端有一个比较好的支持,springmvc能将我们前台提交的数据按照我们事先定下的规则,进行效验判断,对于不合格的数据信息,springmvc会把他保存到一个BindingResult 的类里面,这里面存放是错误集合,从而言之就可以把这些错误信息输出到jsp页面。

使用validation接口进行验证:

    在我们注解驱动中注入validation 效验器<mvc:annotation-driven conversion-service="conversionService" validator="validator"/>

所需依赖的jar包:

   

springmvc配置参考:

  这里我们指定了资源文件,以及一些常用配置,往后错误消息配置到CustomValidationMessage.properties 中以key value 形式读取

 1 <!--hibernate-validator 效验器
 2         org.springframework.validation.beanvalidation.LocalValidatorFactoryBean 這个是spring-context 提供的效验的接口
 3     -->
 4     <bean id = "validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
 5         <!-- hibernate的效验器 -->
 6             <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
 7         <!-- 加载资源文件,在指定文件中配置错误信息如果不加载默认会去找classpath下的ValidationMessage.properties -->
 8             <property name="validationMessageSource" ref ="messageSource"></property>
 9     </bean>
10     <bean id = "messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
11         <!-- 加载资源文件名
12             basenames:不用加properties
13     -->
14         <property name="basenames">
15             <list>
16                 <value>classpath:CustomValidationMessage</value>
17             </list>
18         </property>
19         <!-- 资源文件的编码格式 -->
20         <property name="defaultEncoding" value="UTF-8"/>
21         <!-- 加载超时 120 秒 重新加载-->
22         <property name="cacheSeconds" value="120"/>
23     </bean>

我们实体类pojo 的参考:

 1     //效验名称在1 到 10 字符之间 不建议在里面直接写message 建议写在配置文件里面以国际化方式去读取错误信息
 2     @Size(min=2,max=10,message="{items.name.length.error}")
 3     @NotNull(message="{items.name.isNull}")
 4     private String name;
 5     //非空的效验
 6     @NotNull(message="{items.createtime.isNull}")
 7     private Date createtime;
 8
 9     @NotNull(message="{items.detail.isNull}")
10     private String detail;

controller代码参考:

  在你需要效验的pojo前面添加@Validated 表示这是需要效验,在pojo 后面添加BindingResult 来接受它效验的错误信息

  注意:@Validated 和BindingResult 是配对出现,一前一后方式,这本案例中只是简单实现了這个功能,但并不是完整的。

 1 /**
 2      *     商品信息提交的方法
 3      * @return   重定向的使用
 4      * @throws Exception
 5      * @Validated: 注解效验器
 6      * BindingResult:接受错误信息 9      */
10     @RequestMapping("/editItemsSubmit")
11     public String editItemsSubmit(Model model, Integer id,@Validated ItemsCustom itemsCustom ,BindingResult bindingResult)throws Exception{
12         if (bindingResult.hasErrors()) {
13             List<ObjectError> itemsErrorList = bindingResult.getAllErrors();
14             for(ObjectError objectError:itemsErrorList){
15                 System.out.println(objectError.getDefaultMessage());
16             }
17             model.addAttribute("itemsErrorList", itemsErrorList);
18             return "items/editItems";
19         }
20         // 调用service 里面的接口方法
21         itemsService.updateItems(id, itemsCustom);
22         // 使用重定向到
23         //    queryitems.do return "redirect:queryItems.do";
24         //使用forward  可以在其他页面获取值 对象等
25         //return "forward:queryItems.do";
26         return "success";
27     }

页面参JSP考代码:

  测试代码打印出错误消息

1     <c:if test="${itemsErrorList != null }">
2         <c:forEach items="${itemsErrorList }" var="error" varStatus="index">
3             ${error.defaultMessage}
4         </c:forEach>
5     </c:if>

在资源文件中配置错误信息CustomValidationMessage.properties:

1 # 配置效验器的错误信息,key value 形式
2                         # items 的错误配置
3 items.name.length.error=请输入2到10个字符的商品名称!
4 items.name.isNull=商品名称不能为空!
5 items.createtime.isNull=请输入商品的生产日期!
6 items.detail.isNull=商品描述不能为空!

Validation 效验常用限制注解:

  @Null:限制只能为null

  @NotNull:限制必须不能为空

  @AssertFalse 限制必须为false

  @AssertTrue 限制必须为true

  @DecimalMax(value) 限制必须为一个不大于指定值得数字

  @DecimalMax(value)限制必须为一个不小于指定值得数字

  @Digits(integer,fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分不能超过fraction

  @Futrue 限制必须为一个将来的日期

  @Max(value) 限制必须为一个不大于指定值得数字

  @Min(value)限制必须为一个不小于指定值得数字

  @Past限制必须为一个过去的时间

  @Pattern(value)限制为符合指定的正则表达式

  @Size(max,min)限制字符长度在min 到 max 之间

时间: 2024-07-28 15:23:33

Springmvc_validation 效验器的相关文章

Struts2:效验器——声明式

就是用xml配置的方式,而不是Java代码的形式,那个是“编程式” Action: package org.ah.s2; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class C1 extends ActionSupport implements ModelDriven<Model> { public String m1() { return

Struts 2.0全面分析

Struts 2.0 struts 1---前端控制+应用控制+命令模式 webwork ---控制器+拦截器+代理 Struts 2.0 继承了WebWork的设计理念,并没有继承struts 1,所以与struts 1是截然不同的~! ------------------------------------------------------- Struts 2.0的简单实例: web.xml中 <filter> <filter-name>struts2</filter-

比较全的XML系列工具 可以轻松实现排版、转换和打印!

XML系列 -------------------------------------------------------------------------------- 1.Xsl Formatter-XML可视化工具 是根据W3C策划并推广的xsL式样开发的XML排版和打印转换软件,可以很好的显示和打印XML文档,并可将其转换为PDF文件. 功能: (1)实现XSL样式的排版功能,可将xml内容多版面显示,实现内容精准打印. (2)可以向PDF文件格式转换,在无Adobo Acrobat环

自定义验证器——用Struts2框架以框架师的思维灵活做好该事情

面对的问题:自定义一个18位身份验证器,编写验证器,在validators.xml文件中进行注册.在验证配置文件中使用? 第一部分:理解Struts2中自带的验证器 第二部分:怎样通过服务器(后台),再次对前台的数据进行验证 第三部分:用Struts2来自定义验证器(问题解决方案) 第一部分:理解Struts2中自带的验证器 Struts2框架中自带的后台服务器验证分为两种:声明式验证和编程式验证 u  声明式验证(重点) ?  对哪个 Action 或 Model 的那个字段进行验证 ?  使

利用CH341A编程器刷新BIOS,恢复BIOS,妈妈再也不用担心BIOS刷坏了

前几天,修电脑主析就捣鼓刷BIOS,结果刷完黑屏开不了机,立刻意识到完了,BIOS刷错了.就从网上查资料,各种方法试了个遍,什么用处都没有.终于功夫不负有心人,找到了编码器,知道了怎么用.下面看看具体用法: 先买了一个便宜点的编码器: <ignore_js_op> 把刷错的BIOS芯片先拆下来:<ignore_js_op> 把芯片放到编码器上: 再找一台电脑,我的笔记本派上用场了,下载编码器的驱动程序和编码器软件:  <ignore_js_op> <ignore_

Linux 软件包管理器-----yum配置详解一

一.yum简介    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载.安装.    yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级.安装.删

只需要一点点C++基础,新手也可以制作单机游戏内存修改器

声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行.序:首先我们需要一个Qt+VS环境Qt从http://download.qt.io/archive/中下载,第一个和第三个,在里面选择对应版本.然后就是配环境了,这里提供2013+Qt5.5.1的环境配置,如果环境不同,请自行百度.这点解决问题能力都没有,就别学C++了...我的环境是2013+Qt5.5.1,不同版本可能略有差异,不过大同小异.

基于JSP的RSS阅读器

阅读器访问地址:http://easyrss.tk/,欢迎体验! 目录 一.    概述  二.    设计的基本概念和原理  1.    RSS与RSS阅读器概念 2.    阅读器实现原理 三.    设计方案 1.    架构设计 2.    数据库设计 3.    界面设计 4.    功能设计 5.    网络安全补充 四.    主要源代码  1.    视图部分 五.    阅读器使用说明 1.    注册与登录 2.    添加与管理RSS源 3.    阅读文章 概述 获得信息

谈谈编程器软件开发与设计

*************************************************************************************************************************** 作者:EasyWave                                                   时间:2014.05.24 类别:协议标准-编程器简介                                  声明: