一:数据校验的分类

数据校验分为前台校验和后台校验,前台校验主要是利用JavaScript来完成的,后台校验主要利用Java代码来完成的,可以使用SpringMvc和Hibernate validator来完成数据校验

二:后台数据校验

1:导入Maven相关Jar包(在父pom.xml文件中)

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.9.Final</version>
</dependency>

2:创建Java类需要校验的数据属性上添加相应的注解

package com.doaoao.check;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;public class testUser {@NotEmpty(message = "用户名不能为空")@Size(min = 5,max = 10,message = "用户名的长度为{min}-{max}之间")  // 会将{min}替换为前面设置的min值private String username;@Min(value = 0,message = "年龄的大小不能小于{vlaue}")@Min(value = 150,message = "年龄的大小不能大于{vlaue}")private int age;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

3:修改配置文件 springmvc.xml中的内容

<!--验证器-->
<bean id="doaoaoValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean><!--注册注解驱动-->
<mvc:annotation-driven validator="doaoaoValidator"/>

4:创建一个Controller

package com.doaoao.check;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller
public class UserController {@RequestMapping("/register.do")public ModelAndView register(@Validated testUser user, BindingResult br){ModelAndView m = new ModelAndView();List<ObjectError> allError = br.getAllErrors();// 当格式校验出错时执行 alllError不为空时if(allError != null && allError.size() > 0){FieldError nameError = br.getFieldError("name");FieldError ageError = br.getFieldError("age");// 当用户名输入出现问题if(nameError != null){m.addObject("nameError",nameError.getDefaultMessage());}// 当年龄输入出现问题if(ageError != null){m.addObject("ageError",ageError.getDefaultMessage());}m.setViewName("/register");return m;}m.addObject("name",user.getUsername());m.setViewName("/user");return m;}
}

5:jsp中的内容

 <form action="/register.do" method="get">用户名:<input type="text" name="username">${nameError}<br>年龄:<input type="text" name="age">${ageError}<br><input type="submit" value="提交">
</form>

# 注:hibernate validator中常用注解

...

本笔记参考自:小猴子老师教程 http://www.monkey1024.com

转载于:https://www.cnblogs.com/Doaoao/p/10669968.html

SpringMVC_数据校验相关推荐

  1. c语言实现java接口_五分钟带你了解Java是如何从容而优雅地实现接口数据校验

    本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过Spring MVC定义一个Controller层接口,并将接口请求或返 ...

  2. Maatkit工具使用lt;一gt;之mysql主从数据校验工具

    mysql主从数据校验工具       mysql在5.1之前,其replication都是采用的STATEMENT模式,对表的数据是否一致要求并不严格,所以对数据一致性要求比较严格的应用,定期检查数 ...

  3. Go 语言编程 — validator 数据校验工具

    目录 文章目录 目录 Validator Quick start 约束类型 特殊约束 格式约束 数据结构类型约束 范围约束 字符串约束 唯一性约束 跨字段约束 自定义约束 错误处理 中文错误信息 参考 ...

  4. WPF使用IDataErrorInfo进行数据校验

    这篇博客将介绍如何使用IDataErrorInfo进行数据校验.下面直接看例子.一个Customer类,两个属性(FirstName, Age) class Customer {public stri ...

  5. (转)Silverlight数据校验之INotifyDataErrorInfo

    原文地址:http://www.cnblogs.com/PerfectSoft/archive/2012/03/01/2375007.html 在Silverlight中,数据实体类的有效性校验有多种 ...

  6. C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  7. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  8. SilverlightMVVM模式中的数据校验

    silverlight的数据校验大体分成3种类型: 数据是非必填的但是需要满足相应数据格式的 数据是必填的且可能需要进行数据格式校验的 其他(如数据的联动校验) 以下的数据校验方式针对第二种: 在相应 ...

  9. Java生成CRC16数据校验码

    CRC即循环冗余校验码(Cyclic Redundancy Check[1]  ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数 ...

最新文章

  1. 批处理修改远程桌面端口,并修改相应的防火墙配置
  2. google svn 服务器申请 使用
  3. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...
  4. tvpvar模型的建模步骤_框架箱涵建筑信息建模
  5. oracle %date 0 10%,“date:~0,10%“是什么意思?
  6. 【Java基础篇】你真的懂switch语句吗?
  7. 数字图像处理--图像ROI
  8. 京东到家发布618消费预测报告:原来这个时间点大多人在摸鱼?
  9. 30个极简python代码(demo)
  10. BlackBerry模拟器中文转换
  11. ssr 端口已被占用_解决 SSR for Windows 客户端烦人的 1080 端口已被占用
  12. 【数据库】三级模式两级映射详解
  13. c语言 数组 常数,在c中创建一个常数数组
  14. Opencv中,imag=cv2.cvtColor(imag,cv2.COLOR_BGR2GRAY) 报错:error:!_src.empty() in function ‘cv::cvtColor‘
  15. 阿里视频云web播放器常见问题汇总
  16. Golang pprof简介
  17. 无线通讯 cmt2150A 简介 1527协议
  18. 数字逻辑与数字系统设计——初识数字逻辑
  19. 弥漫的烟圈-Abaqus涡环仿真与空气大炮
  20. SQL Server的彻底卸载与再次安装

热门文章

  1. python集合中的元素是否可以重复_python中集合中的元素是否可以重复
  2. 人均奖金300万,2021年“科学探索奖”名单揭晓:高会军周昆上榜,女性获奖人8位创纪录...
  3. 免费试用人数太多,微软Windows 365云电脑服务器炸了,官方紧急暂停
  4. 英伟达对ARM、Linux开放光线追踪,SDK已就位,网友:switch也能跑光追的节奏?...
  5. 世界首个2nm制程芯片公布!这次IBM跑在了台积电三星英特尔前面
  6. 腾讯服务器“上天”、大疆云台会飞、淘宝被掰弯了……这是昨天各大科技公司的最新产品...
  7. 何恺明最新一作论文:无监督胜有监督,迁移学习无压力,刷新7项检测分割任务...
  8. PHP str_word_count
  9. bcftools合并vcf文件
  10. 准确率99.9%!如何用深度学习最快找出放倒的那张X光胸片(代码+数据)