Springmvc-Validate(数据校验)

数据校验概述

1、项目中,通常使用较多是前端的校验,比如页面中js校验。对于安全要求较高点建议在服务端进行校验。

2服务端校验:

-控制层controller:校验页面请求的参数的合法性。在服务端控制层controller校验,不区分客户端类型(浏览器、手机客户端、远程调用)

-业务层service(使用较多):主要校验关键业务参数,仅限于service接口中使用的参数。

-持久层dao:一般是不校验的。

3、springmvc使用hibernate的校验框架validation

-校验思路:

-页面提交请求的参数,请求到controller方法中,使用validation进行校验。

-如果校验出错,将错误信息展示到页面

4、数据校验步骤

-springmvc数据校验步骤

1、导入校验jar文件

<dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version>
    </dependency>

2、配置校验器

<!-- 配置数据校验的校验器bean 
             
              --> 
              <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
                  <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property>
                  <property name="validationMessageSource" ref="messageResource"></property>
              </bean> 
               <!-- 校验信息提供的资源文件bean -->
               <bean id="messageResource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
                   <property name="basenames">
                       <list>
                           <value>classpath:validationMessageResource</value>
                       </list>
                   </property>
               <property name="fileEncodings" value="utf-8"></property>
               </bean>

3、校验器注入到处理器适配器中

 这段配置validator属性意思是:在调用controller方法之后,马上 让数据校验bean开始工作,对数据进行校验
                <mvc:annotation-driven validator="validator"></mvc:annotation-driven>  

4、添加校验规则

在domain包里的类添加校验规则

5、错误信息文件

把配置文件放到类路径中

6、捕获错误信息

//如果controller方法绑定的参数需要框架帮你校验,那么你要说一声--在参数前面加个注解@Validated
    @RequestMapping("/addProduct.do")
    public String addProduct(@Validated Product product ,BindingResult bindingResult,Model model) {
        //当进入到本方法时,参数校验应该已经搞定了,我们可以获取校验的结果了,可以通过绑定参数bindingResult拿到
        if(bindingResult.hasErrors()) {
            List<FieldError> list=bindingResult.getFieldErrors();
            
            for(FieldError fe:list) {
                System.out.println(fe.getDefaultMessage());
            }
        }

7、显示错误信息

在后台controller

//校验完了想返回页面查询校验出错信息怎么办?
        model.addAttribute("fieldErrors",bindingResult.getFieldErrors());
        model.addAttribute("product", product);

在jsp页面

<!-- 页面怎样展示出错数据呢?c标签 -->
<c:if test="${fieldErrors!=null}">
    <c:forEach items="${fieldErrors}" var="f">
    ${f.defaultMessage}
    </c:forEach>
</c:if>
<form action="${pageContext.request.contextPath}/addProduct.do" method="post">
商品名称:<input type="text" name="name" value="${product.name}"/><br>
商品单价:<input type="text" name="price" value="${product.price}"/><br>
生产日期:<input type="text" name="birth" value="${product.birth}"/><br>
商品描述:<input type="text" name="desc" value="${product.desc}"/><br>
<input type="submit" value="添加"/>

</form>

SpringMVC的数据校验相关推荐

  1. springmvc(四) springmvc的数据校验的实现

    so easy~ --WH 一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端 ...

  2. SpringMVC后台数据校验

    第①步:引入依赖 <!--数据校验--><dependency><groupId>org.hibernate</groupId><artifact ...

  3. SpringMVC的数据转换、格式化和数据校验

    目录 一.数据转换 1.ConversionService 2.自定义类型转换器 (1)案例一 (2)案例二 二.处理静态资源 三.关于 mvc:annotation-driven 四.@InitBi ...

  4. SpringMVC数据校验、文件上传

    SpringMVC数据校验.文件上传 首先在此鸣谢所有本篇博客涉及技术给予我指导的导师,朋友! 目录: 1.文件上传流程: 2.数据校验: 3.本试验遇到的报错问题及解决办法: 4.Java文件源代码 ...

  5. java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)

    九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!--    解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...

  6. springMVC数据校验

    介绍 一般情况下,用户的输入是随意的,为了保证数据的合法性,数据验证是所有 Web 应用必须处理的问题. Spring MVC 有以下两种方法可以验证输入: 利用 Spring 自带的验证框架 利用 ...

  7. SpringMVC_数据校验

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

  8. SpringMVC底层数据传输校验的方案(修改版)

    团队的项目正常运行了很久,但近期偶尔会出现BUG.目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件.出错后,再执行一次就又正常了. 经过跟踪日志,发现是在Server之间进行jso ...

  9. Java数据校验(Bean Validation / JSR303)

    文档: http://beanvalidation.org/1.1/spec/ API : http://docs.jboss.org/hibernate/beanvalidation/spec/1. ...

最新文章

  1. [Poi2010]Antisymmetry
  2. vue中进行判断不同字段的判断,主要是区分于微信小程序和网页版之间写法
  3. 用CSS伪元素制作箭头
  4. istio安装命令整理
  5. HttpHandler浅析
  6. SVN 代码迁出,导出,同步至生产环境脚本
  7. 8-1-Filter过滤器
  8. 概念模型——分析模式学习笔记
  9. HDU1176:免费馅饼(dp,数字三角形的应用)
  10. 赵伟功老师 管理系统提升专家
  11. 能耗分项计量监测系统在某大型公建中的应用
  12. CorelDRAW 2022(CDR22)软件最新版本正式发布 新增功能详解
  13. 中华传统吉祥图案集锦
  14. 分子动力学理论篇(1)——牛顿力学、哈密顿动力学和相空间
  15. 外报分析中国房价上涨三原因 指开发商行为怪异
  16. 计算机仿真技术生物,基于计算机仿真技术的人体生理特性和病理机制研究
  17. Android闹钟APP
  18. 智博 计算机试题库,智博教育计算机新大纲冲刺资料(一)-简答题.pdf
  19. 绿坝遭遇“剽窃门,美国加州一软件公司指控其剽窃他们的技术,并准备诉诸法律
  20. 一群爱做“傻事”的技术宅 1

热门文章

  1. type在python的意思_python中type()是什么意思
  2. orangePi3 lts
  3. zookeeper C API实例
  4. Overlapped分析
  5. 【ORACLE】dmp格式导入导出,表没有数据的情况下,该表导入会缺失
  6. wpsup计算机内存不足处理方法,wps表格太大了占用内存大怎么办_wps表格占用大量内存的处理方法...
  7. ROS 北通游戏手柄灵敏度 频率过高, xbox360/ ps2/3模式切换问题
  8. JSP+Servlet教师工资管理系统(附论文)
  9. 以我所能,为你而加 —— 新一代音视频融合通信平台全接触
  10. GNN-CS224W: 4 Link Analysis: PageRank