用户的输入一般是随意的,为了保证数据的合法性,数据验证是所有 Web 应用必须处理的问题。

在 Spring MVC 框架中有以下两种方法可以验证输入数据:

  • 利用 Spring 自带的验证框架。
  • 利用 JSR 303 实现。

数据验证分为客户端验证和服务器端验证,客户端验证主要是过滤正常用户的误操作,通过 JavaScript 代码完成。服务器端验证是整个应用阻止非法数据的最后防线,通过在应用中编程实现。

客户端验证

在大多数情况下,使用 JavaScript 进行客户端验证的步骤如下:

  • 编写验证函数。
  • 在提交表单的事件中调用验证函数。
  • 根据验证函数来判断是否进行表单提交。

客户端验证可以过滤用户的误操作,是第一道防线,一般使用 JavaScript 代码实现。但仅有客户端验证是不够的,攻击者还可以绕过客户端验证直接进行非法输入,这样可能会引起系统异常,为了确保数据的合法性,防止用户通过非正常手段提交错误信息,必须加上服务器端验证。

服务器端验证

Spring MVC 的 Converter 和 Formatter 在进行类型转换时是将输入数据转换成领域对象的属性值(一种 Java 类型),一旦成功,服务器端验证器就会介入。也就是说,在 Spring MVC 框架中先进行数据类型转换,再进行服务器端验证。

服务器端验证对于系统的安全性、完整性、健壮性起到了至关重要的作用。在 Spring MVC 框架中可以利用 Spring 自带的验证框架验证数据,也可以利用JSR 303 实现数据验证。

Spring MVC数据验证简介相关推荐

  1. Spring MVC 数据验证——validate注解方式

    1.说明 学习注解方式之前,应该先学习一下编码方式的spring注入.这样便于理解验证框架的工作原理.在出错的时候,也能更好的解决这个问题.所以本次博客教程也是基于编码方式.仅仅是在原来的基础加上注解 ...

  2. Spring MVC数据验证

    文章目录 客户端验证 服务器端验证 自定义 Spring 验证器 Validator接口 ValidationUtils 类 Spring MVC验证器应用实例 JSR 303 验证 Hibernat ...

  3. Spring MVC自定义验证注释

    在上一教程中,我展示了如何使用注释来验证表单 . 这对于简单的验证非常有用,但是最终,您需要验证一些现成的注释中没有的自定义规则. 例如,如果您需要根据输入的出生日期来验证用户已超过21岁,或者可能需 ...

  4. 基于佟刚老师视频教程的Spring MVC数据类型转换学习总结

    基于Spring MVC数据类型转换的学习笔记总结 问题 页面中数据格式为字符串格式,后台pojo中对应的类型可能为另外一种对象. 如: 在前台页面输入一个固定格式的时间字符串,在后台接收为一个jav ...

  5. 【ASP.NET MVC4】第八课:MVC数据验证、验证特性、自定义验证

    知识点:MVC数据验证概述.验证特性的使用.自定义验证.扩充基于 Entity Framework 的数据模型. 1.MVC 数据验证概述 1.1  为什么要进行数据验证 ASP.NET MVC 中的 ...

  6. [Spring MVC] - InitBinder验证

    Spring MVC使用InitBinder验证: 使用InitBinder做验证的情况一般会在此Controller中提交的数据需要有一些是业务性质的,也即比较复杂的验证情况下才会使用.大部份简单的 ...

  7. java地址映射关系,Spring MVC——基础(简介,使用,地址映射)

    "大佬们"嘴中的SSH,SSM框架,我这种小白终于解除到第二个S了,关于Spring MVC框架,根据最近的学习发现,还是有很多不足和需要加强巩固的地方,所以,通过总结博客的方式将 ...

  8. Spring MVC:测试简介

    测试是软件开发中最重要的部分之一. 井井有条的测试有助于使应用程序代码保持良好状态,并且处于工作状态. 有很多不同类型的测试和方法. 在本文中,我想对基于Spring MVC的应用程序进行单元测试进行 ...

  9. Spring MVC JSR-303验证框架之Hibernate-Validator

    对于 JSR 303 验证,目前有两个实现,一个是 Hibernate Validator,一个是 Apache BVal.本教程采用的是 Hibernate Validator,注意它和 Hiber ...

最新文章

  1. C#让windows程序只运行一次
  2. 3.1 再论 0/1 分类问题-机器学习笔记-斯坦福吴恩达教授
  3. IMYAOPTableView 源码学习笔记
  4. 如何获取当前刀具号_数控刀具的选用原则,如何使用数控刀具?一文全面介绍数控刀具...
  5. python msi installer_Windows10 MYSQL Installer 安装(mysql-installer-community-5.7.19.0.msi)
  6. 经商失败的人,最可怕的不是失去金钱,而是失去信心
  7. 转帖:django中操作mysql
  8. 基于 RT-Thread Studio的CPK-RA6M4 开发环境搭建指南
  9. java求职英文简历范本2篇_Java英文简历范文
  10. SpringCloud OpenFeign调用第三方服务
  11. Android开发岗位要求集锦
  12. 实现一个打点计时器,要求 1、从 start 到 eThd(包含 start 和 eThd),每隔 100 毫秒 coThsole.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个
  13. python调用pyd_使用python pyd时出错
  14. 一文搞懂候选码、主码、全码、外码、主属性、主键、主关键字、非主属性清晰总结
  15. 添加自签发的 SSL 证书为受信任的根证书
  16. Babel的使用方法
  17. Android混淆技术综述
  18. TCP协议-TCP连接管理
  19. mei yan xiao guo for android
  20. 项目管理岗,HR和PMO青睐的点有哪些差异?

热门文章

  1. 第二章 html标记语言,第二章-认识HTML标签
  2. 双机热备_什么是高可用双机热备?双机热备概念原理详解
  3. 职场精英修炼必学工具:75页自我管理的29个工具,系统方法论
  4. VMware vSAN的六大优势和案例分享
  5. 一步步实现SDDC-Edge负载均衡
  6. OpenStack的八年之痒
  7. Java多线程学习总结(5)——乐观锁和悲观锁的基本概念、实现方式(含实例)、适用场景及常见面试题
  8. php图片生成缩略图_php实现根据url自动生成缩略图的方法
  9. 深度学习数据驱动_模型驱动的物理层通信深度学习
  10. 用matlab画出TFT,基于Matlab的TFT-LCD解码电路的仿真设计(含程序)