JSR303参数安全效验

Java后端参数校验:JSR303实战学习指南 本文还有配套的精品资源,点击获取 简介:本学习资料深入探讨Java后端开发中重要的服务端参数验证环节,使用JSR303标准进行对象级别约束校验。文档涉及Markdown格式的详细说明,配合示例代码和图解,旨在帮助开发者理解和实践使用JSR303进行数据验证的技术要点。包括对JSR303规范的介绍、验证注解的应用、自定义验证逻辑,以及与Spring框架结合的实践案例。 ... 阅读详情

简述项目中用到的validation参数效验,用于controller层请求参数验证
第一步:导入坐标

		<!--引入validation的场景启动器-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>

第二步 : 在VO层设置具体参数的效验

@Data
public class ClassifyVO{
    @NotBlank(message = "打卡组名不能为空")
    private String classifyName;
    @NotEmpty(message = "部门信息不能为空")
    private List<Map> depts;
}

第三步: 在controller层加入参数效验

    @PostMapping("/insert")
    public R<String> insert(@RequestBody @Validated ClassifyVO paraClassify){
        try{
                classifyService.insertClassify(paraClassify);
        } catch (Exception e)
        {
            return R.fail().setResult("系统繁忙,稍后重试");
        }
        return R.ok().setResult("新增打卡组成功");
    }

此时已经可以了,但是如果参数效验不通过,抛出的异常提示信息不太友好,所以进行第四步,优化异常提示信息

第四步: 在全局异常拦截中加入 参数异常 的异常信息处理

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public R exceptionHandler(HttpServletRequest request, Exception exception) throws Exception {
        //JSR303参数安全效验
        if(exception instanceof MethodArgumentNotValidException)
        {
            log.error(exception.getMessage(), exception);
            String message = ((MethodArgumentNotValidException)exception).getBindingResult().getFieldError().getDefaultMessage();
            return R.fail(message);
        }
        String message =exception.getMessage();
        log.error(message);
        return R.fail(message);
    }
}

至此完成,显示效果如下:
打卡组传空时返回这样的异常提示

SAP_MM&FI模块-质保金标准解决方案详解 主要讲述了SAP系统质保金的标准实现方案,包含业务背景、后台配置、前台业务操作记录,以及关键点的AI解释; 阅读详情

相关推荐

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 272

Java Bean Validation注解效验详解及常见UnexpectedTypeException

介绍: 在项目开发中,实体参数效验经常用到,例如在导入,参数传递,不仅仅是数据安全,还是保证系统的健壮性. 后端参数校验通常是是直接在业务方法里面进行逻辑判断,执行具体的业务。但这样带给我们的是代码的耦合,冗余。当我们多个地方需要校验时,我们就需要在每一个地方调用校验程序,导致代码很冗余,且不美观。 在做导入时,效验表格实体时应用到了Hibernate Validator校验工具,Hibe...

格局决定一切,智恒方远 6740

车载与安防项目实战:如何用RK3588搭配NVP6158C实现4路AHD摄像头BT1120接入与同步预览

本文详细解析了基于RK3588处理器与NVP6158C解码芯片实现4路AHD摄像头BT1120接入与同步预览的技术方案。针对车载环视和安防监控场景,重点探讨了硬件架构设计、BT1120接口配置、多路同步机制及Android HAL适配等核心问题,提供了从底层驱动到上层应用的完整实现路径,为相关领域的工程实践提供可靠参考。

weixin_30571465的博客 482

【全网最全】JSR303参数校验与全局异常处理(从理论到实践别用if判断参数了)

一、前言 我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断,为了安全。因为前端很容易拜托,当测试使用PostMan来测试,如果后端没有校验,不就乱了吗?肯定会有很多异常的。今天小编和大家一起学习一下JSR303专门用于参数校验的,算是一个工具吧! 二、JSR303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate...

HongYu012的博客 7774

手把手教你用P-MOS管搭建双电源自动切换电路(含AO3401选型指南)

本文提供了一份基于P-MOS管AO3401构建高可靠双电源自动切换电路的实战指南。文章详细对比了继电器、理想二极管与MOS管方案的优劣,深入解析了AO3401的关键参数选型,并手把手指导了从原理图设计、PCB布局到上电调试的全过程,旨在帮助硬件工程师和创客以极低成本实现无缝、高效的电源冗余方案。

moss5的博客 1228

用Unity Wheel Collider做坦克转向?3步实现履带式载具物理效果

本文详细解析了如何利用Unity的Wheel Collider组件实现履带式载具的差速转向物理效果。通过思维转换、场景搭建和核心代码实现三步,将Wheel Collider从模拟轮式车辆转向改造为控制履带扭矩差的系统,并深入探讨了参数调试与真实感提升的方法,帮助开发者打造物理反馈扎实的坦克或特种车辆模拟。

weixin_29009971的博客 222

【SpringMVC】JSR 303与拦截器注释使用

本文介绍了JSR 303以及JSR 303配置校验后前端与后台结合使用示例。拦截器介绍以及应用场景工作流程和入门操作,最后使用拦截器完成简单的登录操作。

让优秀成为一种习惯! 1977

uniapp map地图实现marker聚合点,并点击marker触发事件

【代码】uniapp map地图实现marker聚合点,并点击marker触发事件。

weixin_44705979的博客 5437

Java数据校验:JSR-303

1.简介 JSR是Java Specification Requests的缩写,意思是Java 规范提案 JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation 即,JSR 303,Bean Validation规范 ,为Bean验证定义了元数据模型和API.。默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展。 2.常用校验注解 分类:Bean Validation 中内置的 constraint Constraint 详细信

xueguchen的博客 3万+

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1581

11、iOS设备逻辑数据分析全解析

本文深入解析iOS设备中的逻辑数据,涵盖图像相关数据库(Photos.sqlite和PhotosAux.sqlite)、录音文件、iPhoto照片存储结构、多媒体文件、第三方应用程序、社交网络应用(如Twitter、Skype、Facebook等)以及苹果相关应用(如Google Mobile、Bing)的数据存储结构和取证方法。此外,还介绍了文档类应用(如Pages、Numbers、Documents To Go)的文件存储结构及恢复方法。适用于iOS取证、数据挖掘和数字调查领域。

rain6的博客 223

JSR303后端校验详解

什么是JSR303? JSR 303 - Bean Validation提供了一种后端数据校验支持,如果一键f12修改前端代码成功绕过前端校验,那么就会存入非法数据,所以后端校验十分重要。应该前端+后端+数据库的校验约束都不能少,全面保障数据规范安全。

有一分热,发一分光。 6034

纯C语言实现的Luhn算法(信用卡校验位):详解与示例

在本文中,我们详细介绍了如何使用纯C语言实现Luhn算法,并提供了一些示例代码。用于检查任意长度的数字字符串的有效性,用于计算给定数字字符串的校验位字符。我们还提供了一个简单的“main”C程序,用于在命令行上接受一个或多个数字字符串,并计算它们的校验位字符。通过阅读本文和理解示例代码,我们希望读者能够更好地理解Luhn算法的工作原理,并能够在自己的项目中应用这种算法。

qq_38334677的博客 1220

JSR303参数校验与全局异常处理

我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断, 为了安全。因为请求很容易绕过前端,比如当测试使用 PostMan 来发送请求,如果后端没有校验,不就乱了吗?肯定会有很多异常的。JSR-303规范(Bean Validation规范)提供了对 Java EE 和 Java SE 中的 Java Bean 进行验证的方式。该规范主要使用注解的方式来实现对 Java Bean 的验证功能。

ToBeMaybe_的博客 1145

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JSR303及其实现

JSR303及其实现

王文萱的博客 1308

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SpringBoot整合JSR-303表单校验

JSR-303表单校验

爱笑的boy的博客 1523

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【SpringMVC】JSR 303与interceptor拦截器快速入门

JSR 303是Java规范请求(Java Specification Request)的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibe

无法自律的人的博客 1286

Spring Boot 2.x基础教程:JSR-303实现请求参数校验

请求参数的校验是很多新手开发非常容易犯错,或存在较多改进点的常见场景。比较常见的问题主要表现在以下几个方面: 仅依靠前端框架解决参数校验,缺失服务端的校验。这种情况常见于需要同时开发前后端的时候,虽然程序的正常使用不会有问题,但是开发者忽略了非正常操作。比如绕过前端程序,直接模拟客户端请求,这时候就会突然在前端预设的各种限制,直击各种数据访问接口,使得我们的系统存在安全隐患。 大量地使用if/e...

程序猿DD 2798

SpringMVC框架 |JSR303数据校验

文章目录一、JSR303二、JSR303的使用步骤第一步:导入jar包/添加Maven依赖:第二步:在bean中为属性加上注解第三步:告诉SpringMVC需要校验的JavaBean普通表单回显错误信息三、自定义国际化错误消息的显示1.编写国际化文件 一、JSR303 只做前端校验是不安全的,重要的数据一定要加上后端验证。可以在程序中将每一条数据取出校验,如果校验失败直接来到添加页面,提示其重新...

匿名攻城狮 2192

Spring Boot中使用JSR-303实现请求参数校验

JSR-303是Java中的一个规范,用于实现请求参数校验。它定义了一组注解,可以应用于JavaBean的字段上,用于验证输入参数的合法性。下面是一些常用的JSR-303注解及其介绍:

好看的皮囊千篇一律,有趣的灵魂万里挑一。 994

全面掌握JSR303校验:从入门到实战

String message() default "手机号格式不正确";Class<?Class<?@Override// 配合@NotNull使用// 使用自定义注解JSR303校验为Java开发者提供了一套优雅的参数校验解决方案。通过本文的学习,你应该已经掌握了从基础使用到高级特性的全部内容。在实际项目中,合理使用参数校验可以显著提高代码质量和系统安全性。

2301_79437276的博客 1090

Spring Boot 快速入门4 ——JSR-303 数据校验

我们在日常开发中,避不开的就是参数验证,有人说前端不是回在表单证进行校验吗,在后端中,我们可以直接不管前端怎么做判断过滤,在后端中为了安全,还是需要进行判断的。在前端做校验是很容易绕过的,举个例子,当测试使用PpostMan时,如果后端没有校验,肯定回出现很多异常。今天就和大家来一起学习JSR303专门用于参数校验。JSR-303是 JAVA EE 6 中的一项子规范,叫做,官方参考实现是。提供了JSR 303规范中所有内置constraint的实现,除此之外还有一些附加的traint。

Z99263的博客 2178

SpringMVC之JSR303与拦截器

SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个 controller生命周期之内可以多次调用。

ChatYU的博客 1406

【工具】JSR-303后端参数校验框架的使用方法及说明

我们已经定义好了dto,然后我们需要在接口层对dto进行校验,校验的方法也很简单,只需要在接口的参数列表中添加一个。

Decade_Faiz的博客 1105

SpringMVC之JSR303和拦截器

拦截器的作用是可以统一处理请求和响应数据,比如请求参数的校验、权限认证、日志记录等,可以减少代码重复、提高代码复用性、增强代码的可维护性和可测试性。在拦截器中,可以获取请求的相关参数、请求头等信息,可以对请求参数进行验证和修改,还可以在请求前后记录日志等操作。增加程序的健壮性:通过对Java Bean属性的验证,可以有效地防止非法输入数据对程序的影响,减少程序出错的概率,增加程序的健壮性。提高程序的安全性:通过对Java Bean属性的验证,可以确保输入数据的有效性和完整性,从而减少了程序被攻击的风险。

djssubddbj的博客 488

SpringMVC中的JSR303与拦截器的使用

SpringMVC中的JSR303与拦截器的使用

m0_73192864的博客 879
上一篇: 随笔随想-2022-06-07
下一篇: 在linux 上启停jar包的脚步总结
libingbojava
博客等级 码龄9年 64粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值