在 Spring MVC 中有两种方式可以验证输入:1. Spring 自带的验证框架;2. 利用 JSR 303 实现,即 Java Specification Requests

Converter 和 Formatter 作用于 field 级,在 MVC 应用程序中,能够 将 String 转换或格式化成另一种 Java 类型,如 java.util.Date。

验证器作用于 object 级,决定某一个对象中的所有 field 是否均是有效的,以及是否遵循某些规则。

如果一个程序中即使用了 Formatter,又有 Validator(验证器),则其事件顺序是:在调用 Controller 期间,将会有一个或者多个 Formatter 试图将输入字符串转换成 domain 对象中的 field 值,一旦格式化成功,验证器就会介入。

Spring 验证器

为了创建 Spring 验证器,要实现 org.springframework.validation.Validator 接口。该接口有 supports 和 validate 两个方法。如果验证器可以处理指定的 Class,supports 方法将返回 true,validate 方法会验证目标对象,并将验证错误填入 Errors 对象。

Errors 对象时 org.springframework.validation.Errors 接口的一个实例。Errors 对象中包含了一系列 FieldError 和 ObjectError 对象。

package org.springframework.validation;
public interface Validator {
public abstract boolean supports (Class<?> clazz);
public abstract void validate (Object target, Errors errros);
}

工具类 ValidationUtils

org.springframework.validation.ValidationUtils 类是一个工具类,有助于编写 Spring 验证器。

JSR 303 验证

JSR 303 是正式的 Java 规范,建议使用。

Spring MVC 中的输入验证 Vlidator的更多相关文章

  1. Spring MVC(十四)--SpringMVC验证表单

    在Spring MVC中提供了验证器可以进行服务端校验,所有的验证都必须先注册校验器,不过校验器也是Spring MVC自动加载的,在使用Spring MVC校验器之前首先要下载相关的jar包,下面是 ...

  2. JSR-303 Bean Validation 介绍及 Spring MVC 服务端参数验证最佳实践

    任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用很多时候同样的数据验证逻辑会出现在不同的层,这样 ...

  3. Spring MVC 中的基于注解的 Controller【转】

    原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...

  4. Spring MVC中基于注解的 Controller

         终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...

  5. Spring MVC之Action输入参数

    第一部分:Action输入参数Spring MVC 通过@RequestMapping注解映射请求,最终的真正执行代码为处理器方法,即@RequestMapping注解的方法.Spring MVC方法 ...

  6. Spring MVC 中 @ModelAttribute 注解的妙用

    Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...

  7. Spring MVC 中的基于注解的 Controller(转载)

           终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法 ...

  8. Spring MVC+ajax进行信息验证

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...

  9. Spring MVC 中的http Caching

    文章目录 过期时间 Last-Modified ETag Spring ETag filter Spring MVC 中的http Caching Cache 是HTTP协议中的一个非常重要的功能,使 ...

随机推荐

  1. Excel函数之sumifs应用

    这个函数是用来进行多条件求和的一个函数 示例:根据表格求出“鼎盛书店”2012年度所有图书小计的总和,这里就用sumifs计算 首先定位结果输出单元格,祭出函数. sum_range参数就是筛选后需要 ...

  2. PySide中QtGui.QFrame的用法

    最近一位同事的出现让我重新正视PySide中designer这个工具的强大之处,通过QtGui.QObject.setGeometry(QtCore.QRect())这个最简单直接的方法可以完成很多复 ...

  3. HTTP Request & Response

    Request & Response header details can be found here The request method indicates the method to b ...

  4. bzoj2141排队

    /* 动态求逆序对,可以树套树来写, 将交换操作理解成插入和删除比较好理解, 里层是个区间求和的线段树就好了 或者叫 带修主席树? */ #include<cstdio> #include ...

  5. python3:实现字符串的全排列(有重复字符)

    抛出问题 求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321. 解决方案 #字符串任意两个位置字符交换 def str_replace(str, x ...

  6. Java 学习 注解

    转载:https://blog.csdn.net/briblue/article/details/73824058 注解语法 因为平常开发少见,相信有不少的人员会认为注解的地位不高.其实同 class ...

  7. Android 开发 框架系列 EventBus 事件总线

    介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...

  8. py库:把python打包成exe文件(pyinstaller)

    http://blog.csdn.net/be_quiet_endeavor/article/details/73929077 用Pyinstaller把Python3.4程序打包成可执行文件exe ...

  9. Maven CXF wsdl2java XMLGregorianCalendar类型更改

    jaxb-bindings.xml配置: <?xml version="1.0" encoding="UTF-8"?> <jaxb:bindi ...

  10. php获取微信的openid

    https://www.cnblogs.com/wxfallstar/p/6826886.html https://www.cnblogs.com/liangxiblog/p/5909432.html