使用@Validated校验数据(除数据库做辅助)
一、controller层
/**
* 使用@Validated来进行校验
* @author HuangJingNa
* @date 2019年12月23日 下午6:02:20
*
* @param validatedTestParam
* @return
*/
@GetMapping("validated_test")
@NotCheckOnline
public Object validatedTest(@Validated ValidatedTestParam validatedTestParam) {
return "校验完成";
}
二、controller层传递的参数封装类
package cn.kooun.pojo.params;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* 通过注解校验数据
* @author HuangJingNa
* @date 2019年12月23日 下午6:41:00
*
*/
@Getter
@Setter
@ToString
public class ValidatedTestParam {
@NotBlank(message = "姓名不能为空")
@Pattern(regexp = ".*{1,50}", message = "姓名不合法")
private String name;
@NotBlank(message = "学号不能为空")
@Pattern(regexp = "[\\w]{6,20}", message = "学号不合法")
private String number;
@NotNull(message = "年龄不能为空")
@Min(value = 1, message = "年龄不合法")
@Max(value = 200, message = "年龄不合法")
private Integer age;
@NotNull(message = "性别不能为空")
@Min(value = 0, message = "性别不合法")
@Max(value = 1, message = "性别不合法")
private Integer sex;
}
三、全局异常处理
package cn.kooun.core.exception;
import javax.servlet.http.HttpServletRequest;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.kooun.common.result.Result;
import cn.kooun.common.result.ResultUtils;
import cn.kooun.pojo.exception.OffLineException;
/**
* 全局异常处理
* @author HuangJingNa
* @date 2019年12月21日 下午3:46:19
*
*/
@ControllerAdvice//标记此类为全局异常拦截器
public class GlobalExceptionHandler {
/**
* 系统异常处理,如404、500
* @author HuangJingNa
* @date 2019年12月21日 下午3:48:45
*
* @return
* @throws Exception
*/
@ExceptionHandler(value = Exception.class)//监听对应的异常对象
@ResponseBody
public Object defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception{
//控制台输出错误信息
e.printStackTrace();
if(e instanceof OffLineException) {
return ResultUtils.error("登录失效,请重新登录~", Result.JUMP_LOGIN);
}
return ResultUtils.error("系统繁忙,请联系管理员~");
}
/**
* 自定义异常处理@Validated抛出的数据校验
* @author HuangJingNa
* @date 2019年12月21日 下午3:54:32
*
* @param req
* @param e
* @return
* @throws Exception
*/
@ExceptionHandler(value = BindException.class)
@ResponseBody
public Object defaultArithmeticHandler(HttpServletRequest req, BindException e) throws Exception{
//控制台输出错误信息
e.printStackTrace();
return ResultUtils.error(
e.getBindingResult().getFieldError().getDefaultMessage(),
"BindException");
}
}
注:使用@Validated注解来校验数据,随机触发校验,不按从上往下的变量进行校验,所以提示也是乱的(可能是使用多线程来处理的)
且在此校验完成后,还要进入service层再进行有关数据库做辅助的数据校验,不利于用户体验,但是提高了开发效率
使用@Validated校验数据(除数据库做辅助)的更多相关文章
- php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中
php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...
- django基础之day09,Forms组件在程序中做了哪些事? 校验数据、渲染标签、展示信息
******************************* Forms组件 *************************************************** Forms组件在 ...
- springMVC(5)---导入excel文件数据到数据库
springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...
- 大数据高性能数据库Redis在Windows上的使用教程
Redis学习笔记----Redis在windows上的安装配置和使用 Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括s ...
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- 使用ModelForm校验数据唯一性
在设计模型类的时候,将指定字段设置unique=true属性,可以保证该字段在数据库中的唯一性. 使用ModelForm可以将指定模型类快速生成表单元素.在提交数据后,使用is_valid()校验时, ...
- Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
在上一篇文章中我们成功得到了重新组织后的数据,接下来需要做的便是将数据插入到数据库中了.在与数据库打交道的过程中有一些方法是普遍的,我们将这些通用方法封装到一个DbUtil类中,以便复用,封装好的Db ...
- 读取Execl表数据 导入数据库
不知不觉博客园园林都两年多了,我是今年毕业的应届生,最近公司项目需要改动,很多的数据需要导入,很多的实体类需要些.考虑到这些问题自己写了两个winform版的小工具,一个是读取Execl数据导入数据库 ...
- m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置
m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...
随机推荐
- js 无刷新文件上传 (兼容IE9 )
之前项目中有个文件上传了需求,于是直接就使用了FormData对象异步上传,但是在测试得时候发现ie9无法正常上传(项目要求兼容IE9+),无奈,查资料得知IE9- 版本不支持formdata对象得异 ...
- linux(centos8):用tr替换或删除字符
一,tr命令的用途 tr命令可以替换或删除文件中的字符 它从标准输入设备读取数据, 处理完成将结果输出到标准输出设备 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnbl ...
- ucore操作系统学习(三) ucore lab3虚拟内存管理分析
1. ucore lab3介绍 虚拟内存介绍 在目前的硬件体系结构中,程序要想在计算机中运行,必须先加载至物理主存中.在支持多道程序运行的系统上,我们想要让包括操作系统内核在内的各种程序能并发的执行, ...
- 500G Python从入门到进阶的视频资料
第一部分:Python资源500G百度网盘学习视频300+本电子书需要的小伙伴可以叫小编的Q群867067945 点击展开,查看完整图片 回复关键字:学习第二部分:Python就业指导 更多更详细的就 ...
- ceil中有-0啊
这里主要是有一点: 1 Math.ceil(d1) ceil 方法上有这么一段注释:If the argument value is less than zero but greater ...
- linux (简单了解)
目录 Bash Shell 简单了解 Bash Shell基础语法 一 文件管理 二 用户管理 三权限管理 四 软件管理 什么是Bash Shell 命令的解释,用来翻译用户输入的命令 Bash Sh ...
- Java:基于TCP协议网络socket编程(实现C/S通信)
目录 一.前言:TCP原理简介 二.Socket编程通信 三.TCP服务器端(具体代码) 四.TCP客户端(具体代码) 五.通信效果演示 六."创意"机器人:价值一个亿的AI核心代 ...
- git 移除远程仓库关联
1 git remote rm origin // 移除本地关联 2 git remote add origin git@github.com/example.git // 添加线上仓库 3 git ...
- UWP仿网易云音乐之1-TitleBar
首先,创建一个UWP的项目.我使用的是Visual Studio 2017 社区版. 如图,我们将项目命名为UWP-Music. 现在我们先标题栏的配色调整与网易云音乐一致. 我们先分析一下标题栏,默 ...
- 【转】Setting up SDL 2 on Visual Studio 2019 Community
FROM: http://lazyfoo.net/tutorials/SDL/01_hello_SDL/windows/msvc2019/index.php Setting up SDL 2 on V ...