首页 > 其他分享 >spring mvc环境之validator表单验证(十一)

spring mvc环境之validator表单验证(十一)

时间:2022-12-12 17:57:01浏览次数:53  
标签:name spring age 校验 Validator JSR mvc validator

 

JSR 303、JSR 349与Bean Validator

        笼统来说,就是Java规定了一套关于验证器的API,规范先后发了两版,就是所谓的JSR 303与JSR 349。然后提出了基于规范的实现:Bean Validator。JSR 303是最早的,其对应了Bean Validator 1.0的版本,比较菜,然后后来扩展了JSR 349,提出了依赖注入、注解等内容,称为了Bean Validator。

        关于Bean Validator,这并不是一项技术,也算是一种规范,需要对其实现。而Hibernate Validator就是其中一种对规范的实现,是JSR303的扩展。因为Spring MVC本身不提供validator的,所以我们需要其他的代替.

-----------------------------------------

数据校验原理:

  spring MVC规定要实现数据校验必须实现ValidatorFactory接口,但是这个接口的实现类springMVC已经为我们写好了LocalValidatorFactoryBean。也就是说只要把这个类让spring管理上后,我们就可以用对应的注解去验证了。那怎样管理(配置)呢?

spring mvc 配置:

<mvc:annotation-driven validator="validator"/>     
    <!-- 以下 validator  ConversionService 在使用 mvc:annotation-driven 会 自动注册-->  
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">  
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>  
    </bean>

意思是只需要配置一个 <mvc:annotation-driven/>即可.

------------------------------------------------------

数据校验步骤:

1.引入对应的jar包

2.springMVC配置,和校验的写法

3.验证一下

 

==========================

1.引入相应的依赖

<!-- 验证器所需的包 -->
        <dependency>
            <groupId>com.fasterxml</groupId>
            <artifactId>classmate</artifactId>
            <version>1.4.0</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.3.2.Final</version>
        </dependency>

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

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>

其实可以值引用后两个,后面两个依赖前两个,会自动加入进来

 

2.校验类的配置 (有可能已经配置了)

<mvc:annotation-driven />

在控制器里面校验参数时:(规定控制器需要验证的对象,后面跟形参BindingResult bindingResult会自动记录校验结果).

 

3.验证一下

 

1)前端表单

数据的验证
<form action="./index/index07" method="get"  >
    id:<input type="text" name="users.id" />
    name:<input type="text" name="users.name" />
    age:<input type="text" name="users.age" />
    <input type="submit" value="submit" />
</form>

 

2)实体写法

import lombok.Data;
import org.hibernate.validator.constraints.Range; import javax.validation.constraints.NotEmpty; import java.io.Serializable; @Data public class UserEntity implements Serializable { private int id; @NotEmpty(message = "姓名不能为空") private String name; @Range(min = 1,max = 120) private int age; public UserEntity() { } public UserEntity(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } }

 

3)控制器写法

    @RequestMapping("index07")
    public ModelAndView index07(@Valid @ModelAttribute("user") UserEntity user, BindingResult bindingResult){
    /* 测试一下数据校验 */
        System.out.println(user);
        System.out.println(bindingResult.getFieldError("name").getDefaultMessage());
        System.out.println(bindingResult.getFieldError("age").getDefaultMessage());
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index01");
        return mv;
    }

 

 

 

 

 

参:https://www.cnblogs.com/fps2tao/p/13784169.html

https://www.cnblogs.com/fps2tao/p/13784283.html

https://www.cnblogs.com/hellowhy/p/9750026.html

 

标签:name,spring,age,校验,Validator,JSR,mvc,validator
From: https://www.cnblogs.com/fps2tao/p/16976763.html

相关文章

  • 《Spring Boot+Vue全栈开发实战》读书笔记
    写在前面嗯,回家处理一些事,所以离职了,之前的公司用开源技术封装了一套自己的低代码平台,所以之前学的springBoot之类的东西都忘了很多,蹭回家的闲暇时间复习下。笔记整体以Sp......
  • SpringBoot+Vue实现第三方Gitee登录(二)
    1.准备工作_OAuth2(官网地址:开发流程)1.1 API使用条款  1.OSCHINA用户是资源的拥有者,需尊重和保护用户的权益。  2.不能在应用中使用OSCHINA的名称。  3.......
  • 轻量前后端分离简单网页版聊天(Spring Boot+WebSocket+Vue)Demo实现
    WebSocket是啥?在HTTP协议中,所有的请求都是由客户端发起的,由服务端进行响应,服务端无法向客户端推送消息,但是在一些需要即时通信的应用中,又不可避免地需要服务端向客户端推......
  • Spring Boot 学习笔记
    嗯,加油生活,依旧,摘几句子.我十有八九的欲言又止,在日后想来都庆幸。而绝大多数的敞开心扉在事后都追悔。-------德卡先生的信箱2019.10.3Spring的发展Spring1.x......
  • 《Spring Cloud 微服务架构进阶》读书笔记
    前页随着DevOps和以Docker为主的容器技术的发展,云原生应用架构和微服务变得流行起来。云原生包含的内容很多,如DevOps、持续交付、微服务、敏捷等第一章,微服务架构介......
  • postman+springboot一次上传多个文件
     开发中到前端一次上传多个文件的需求如何实现,下面使用postman模拟前端的请求,后端使用srpingboot来实现1、postman设置   2、Java代码@RestController@Reque......
  • Spring Boot + Gzip 压缩超大 JSON 对象,传输大小减少一半
    SpringBoot+Gzip压缩超大JSON对象,传输大小减少一半源码在:\day01-sentinel\cloud-demo\user-service\src\main\java\cn\itcast\user\filter......
  • springmvc常用标签库
    input标签相当于text<form:inputpath="username"/></td>password标签<form:passwordpath="password"/>hidden标签<form:hiddenpath="id"/>textarea标签是一个支持多行输......
  • Spring-day03
    Spring_day03今日目标理解并掌握AOP相关概念能够说出AOP的工作流程能运用AOP相关知识完成对应的案例编写重点掌握Spring的声明式事务管理1,AOP简介前面我们在介......
  • Spring-day02
    Spring_day02今日目标掌握IOC/DI配置管理第三方bean掌握IOC/DI的注解开发掌握IOC/DI注解管理第三方bean完成Spring与Mybatis及Junit的整合开发1,IOC/DI配置管理第......