首页 > 其他分享 >SpringMVC 数据校验

SpringMVC 数据校验

时间:2023-10-06 13:13:29浏览次数:28  
标签:SpringMVC 校验 springframework println import ElementType 数据

SpringMVC 数据校验

应用程序在执行业务逻辑前,必须通过数据校验保证接收的输入数据时正确合法的.

在一般情况下,应用程序的开发是分层的,不同层的代码由不同开发人员负责。

很多时候,同样的数据校验会出现在不同层中,这样会导致代码冗余,为了避免这样的情况,最好是将验证逻辑和相应的域模型进行绑定,将代码校验的逻辑集中起来管理

自定义数据校验注解

package com.tobie.validator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * @author Tobieance
 * @description 自定义校验注解
 * @date 2023-09-14 11:02
 */
@Target({ElementType.FIELD,ElementType.METHOD,ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {PhoneNoValidator.class})
public @interface PhoneNo {
    //错误提示信息
    String message() default "手机号码格式错误";
    //分组
    Class<?>[] groups() default {};
    //负载
    Class<? extends Payload>[] payload() default {};
    //指定多个时使用
    @Target({ElementType.FIELD,ElementType.METHOD,ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Constraint(validatedBy = {PhoneNoValidator.class})
    @interface list{
        PhoneNo[] value();
    }
}

校验Controller

package com.tobie.validator;

import lombok.val;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;

/**
 * @author Tobieance
 * @description 数据校验控制器
 * @date 2023-09-14 10:12
 */
@Controller
public class ValidatorController {
    /**
     * <h2>@Valid 用于启动校验</h2>
     * BindingResult:封装校验结果
     * @param depositDto 存款Dto
     * @return {@link String}
     */
    @RequestMapping("validator")
    public String validate(@Valid @ModelAttribute("msg") DepositDto depositDto, BindingResult bindingResult){
        //判断校验结果
        if(bindingResult.hasErrors()){
            //打印校验错误数量
            System.out.println("校验错误数量:"+bindingResult.getErrorCount());
            val fieldErrors=bindingResult.getFieldErrors();
            //打印校验错误信息
            System.out.println("校验错误信息:");
            for (val fieldError:fieldErrors) {
                System.out.println(fieldError);
            }
        }
        System.out.println(depositDto);
        return "result";
    }
}

校验前端页面

<%--
  Created by IntelliJ IDEA.
  User: 87036
  Date: 2023-09-13
  Time: 16:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>SpringMVC 数据校验</title>
</head>
<body>
<fieldset>
  <legend><h1>请输入存款信息</h1></legend>
  <form action="validator" method="post">
    账号:<input type="text" name="account"/><br/>
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="text" name="password"/><br/>
    身份证号:<input type="text" name="id"/><br/>
    金额:<input type="text" name="amount"/><br/>
    年限:<input type="text" name="duration"/><br/>
    日期:<input type="text" name="date"/><br/>
    电话:<input type="text" name="phone"/><br/>
    <input type="submit" value="提交">
  </form>
</fieldset>
</body>
</html>

标签:SpringMVC,校验,springframework,println,import,ElementType,数据
From: https://www.cnblogs.com/tobieance/p/17744457.html

相关文章

  • SpringMVC 拦截器
    SpringMVC拦截器<!--配置拦截器,可定义多个拦截器--><mvc:interceptors><!--定义1个拦截器--><mvc:interceptor><!--用于指定拦截器匹配url--><mvc:mappingpath="/user/**"/><!--用于指定拦截器排除的url-->&......
  • SpringMVC 文件上传
    SpringMVC文件上传<!--支持文件上传--><beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--maxUploadSizePerFile:单个文件大小限制maxUploadSize:整个请求大小限制--><propert......
  • SpringMVC 异常处理
    SpringMVC异常处理异常处理类ExceptionHandlerpackagecom.tobie.globalexception;importorg.springframework.ui.ModelMap;importorg.springframework.web.bind.annotation.ControllerAdvice;importorg.springframework.web.bind.annotation.ExceptionHandler;import......
  • Redis数据库
    Redis数据库SQL数据库缺陷常见NoSQL数据库Redis特点速度极快Redis的所有数据都是存放在内存中,这是Redis速度快的最主要原因Redis是用C语言实现的,一般来说C语言实现的程序"距离"操作系统更近,执行速度相对会更快Redis使用了单线程架构,预防了多线程可能产生的线程切换和竞......
  • SpringMVC入门demo
    工作流程demo使用:配置文件配置DispatcherServlet<?xmlversion="1.0"encoding="UTF-8"?><!--更新版本为4.0--><web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/j......
  • SpringMVC 类型转换
    SpringMVC类型转换Spring引入通用的数据类型转换系统,其定义了SPI接口和相应的运行时执行类型转换的API,提供无状态、强类型其可以在任意类型之间进行类型转换,可以用于任何需要的地方(如SpEL、数据绑定等)内置类型转换器<!--开启类型转换服务--><mvc:annotation-drivenconver......
  • 调用API获取天气数据
    在学习SpringMVC过程中,我了解到RestfulAPI的调用只需要请求符合规范就能很轻松的实现功能,可以很好地引起我们的学习兴趣,这里我也自己尝试使用了AJAX,jQuery来向API发送请求,并接收JSON数据。一、找到API提供商这里我使用的是https://www.apispace.com/,提供的各类API非常齐全,文......
  • 【创新项目探索】大数据服务omnidata-hive-connector介绍
    omnidata-hive-connector介绍omnidata-hive-connector是一种将大数据组件Hive的算子下推到存储节点上的服务,从而实现近数据计算,减少网络带宽,提升Hive的查询性能。目前支持HiveonTez。omnidata-hive-connector已在openEuler社区开源。OmniData架构OmniData是算子下推的总称。OmniD......
  • 大数据面试题:MapReduce压缩方式
    可回答:1)Hadoop常见的压缩算法有哪些?问过的一些公司:网易云音乐(2022.11),阿里(2020.08)参考答案:1、MapReduce支持的压缩方式压缩格式hadoop自带?算法文件扩展名是否可切分换成压缩格式后,原来的程序是否需要修改DEFLATE是,直接使用DEFLATE.deflate否和文本处理一样,不需要修改Gzip是,直接......
  • 【大数据】HDFS
    HDFS原理基本介绍1:HDFS全称:HadoopDistributedFileSystem2:Hadoop三大组件(HDFS、MapReduce、YARN)之一3:可在多台服务器上构建集群,提供分布式数据存储能力4:NameNode:主角色,管理HDFS集群和DataNode角色5:DataNode:从角色,负责数据的存储6:SecondaryNameNode:辅助角色,协......