java开发之基于Validator接口的SpringMVC数据校验方式

 更新时间:2021年09月15日 11:03:31   作者:DrLai  
这篇文章主要介绍了java开发之基于Validator接口的SpringMVC数据校验方式,文中附含详细示例代码,有需要的朋友可以借鉴参考下

Spring MVC 提供了两种数据校验的方式:

1、基于 Validator 接口。

2、使用 Annotation JSR - 303 标准进行校验。

基于 Validator 接口的⽅式需要自定义 Validator 验证器,每⼀条数据的验证规则需要开发者⼿动完成, 使⽤ Annotation JSR - 303 标准则不需要⾃定义验证器,通过注解的方式可以直接在实体类中添加每个属性的验证规则,这种方式更加方便,实际开发中推荐使用。

1.定义实体类Account

package entity;
import lombok.Data;
@Data
public class Account {
    private String name;
    private String password;
}

2.自定义验证器 AccountValidator,实现 Validator 接口

package validator;
import entity.Account;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class AccountValidator implements Validator {
    @Override
    public boolean supports(Class<?> aClass) {
        return Account.class.equals(aClass);
    }
    @Override
    public void validate(Object o, Errors errors) {
        ValidationUtils.rejectIfEmpty(errors,"name",null,"姓名不能为空");
        ValidationUtils.rejectIfEmpty(errors,"password",null,"密码不能为空");
    }
}

Validator中有两个方法, supports是判断传入是否为目标类,如果是的话则进行下一步,数据验证的操作。

3.控制器

package Mycontroller; 
import entity.Account;
import entity.Person;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.validation.Valid;
@Controller
@RequestMapping("/validator")
public class ValidatorHandler {
    @GetMapping("/login")
    public String login(Model model){
        model.addAttribute("account",new Account());
        return "login";
    }
    @PostMapping("/login")
    public String login(@Validated Account account, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            return "login";
        }
        return "index";
    }

4. springmvc.xml 配置验证器

<bean id="accountValidator" class="com.southwind.validator.AccountValidator">
</bean>
<mvc:annotation-driven validator="accountValidator"></mvc:annotation-driven>

5.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form:form modelAttribute="account" action="/validator/login" method="post">
        姓名:<form:input path="name"></form:input><form:errors path="name"></form:errors><br>
        密码:<form:input path="password"></form:input><form:errors path="password"></form:errors><br>
        <input type="submit" value="登录">
    </form:form>
</body>
</html>

以上就是java开发之基于Validator接口的SpringMVC数据校验方式的详细内容,更多关于SpringMVC数据校验的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot发现最新版Druid重大问题(坑)

    SpringBoot发现最新版Druid重大问题(坑)

    这篇文章主要介绍了SpringBoot发现最新版Druid重大问题(坑),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 通过一个map替换字符串中指定的字符变量方法

    通过一个map替换字符串中指定的字符变量方法

    下面小编就为大家带来一篇通过一个map替换字符串中指定的字符变量方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 学习C语言对后期java有帮助吗

    学习C语言对后期java有帮助吗

    在本篇文章里小编给大家整理的是一篇关于学习C语言对后期java有帮助吗的基础文章,有兴趣的朋友们可以参考下。
    2020-11-11
  • 浅析java双向冒泡排序算法

    浅析java双向冒泡排序算法

    这篇文章主要介绍了浅析java双向冒泡排序算法,并附上源码,需要的朋友可以参考下
    2015-02-02
  • Java中的Map集合根据key值排序的实现

    Java中的Map集合根据key值排序的实现

    本文主要介绍了Java中的Map集合如何根据key值排序,包含使用TreeMap和使用lambda表达式和Stream流两种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 解决fastjson泛型转换报错的解决方法

    解决fastjson泛型转换报错的解决方法

    这篇文章主要介绍了解决fastjson泛型转换报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 基于SpringBoot和Vue3的博客平台的用户注册与登录功能实现

    基于SpringBoot和Vue3的博客平台的用户注册与登录功能实现

    本教程将指导您如何使用Spring Boot和Vue3实现用户注册与登录功能。我们将使用Spring Boot作为后端框架,Vue3作为前端框架,同时使用MySQL作为数据库,感兴趣的朋友可以参考一下
    2023-04-04
  • 探究Java中Integer缓冲区底层原理

    探究Java中Integer缓冲区底层原理

    本文将会给大家讲一讲Integer这个包装类的底层原理。在现在的就业环境下,我们需要知其然,还要知其所以然,才能更好地满足就业需求,感兴趣的小伙伴可以参考阅读
    2023-05-05
  • 浅析SpringBoot及环境搭建过程

    浅析SpringBoot及环境搭建过程

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.这篇文章主要介绍了SpringBoot介绍及环境搭建,需要的朋友可以参考下
    2018-01-01
  • 一篇文章带你学会Spring MVC表单标签

    一篇文章带你学会Spring MVC表单标签

    Spring MVC表单标签是网页的可配置和可重复使用的构建块,下面这篇文章主要给大家介绍了如何通过一篇文章学会Spring MVC表单标签的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03

最新评论