Spring Boot 通过全局配置去除字符串类型参数的前后空格

springBoot 配置接收 String 参数时自动去除前后空格 ps:在接收String类型参数时,前后可能存在一些空格,如果未曾去除就直接保存的话,可能会对一些特殊的业务场景造成致命影响。为了杜绝这种情况,需要在接收参数时进行前后空格清除处理。 阅读详情

1、问题

避免前端输入的字符串参数两端包含空格,通过统一处理的方式,trim掉空格

2、实现方式

/**
 * 去除字符串类型参数的前后空格
 * @author yanlei
 * @since 2022-06-14
 */
@Configuration
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class StringParamTrimConfig {
    @ControllerAdvice
    public static class ControllerStringParamTrimConfig {
        /**
         * url和form表单中的参数trim
         */
        @InitBinder
        public void initBinder(WebDataBinder binder) {
            // 构造方法中boolean参数含义为如果是空白字符串,是否转换为null
            // 即如果为true,那么 "" 会被转换为null,否则为 ""
            StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(false);
            binder.registerCustomEditor(String.class, stringTrimmerEditor);
        }
    }

    /**
     * Request Body中JSON或XML对象参数trim
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return jacksonObjectMapperBuilder ->
                jacksonObjectMapperBuilder
                       .deserializerByType(String.class, new StdScalarDeserializer<String>(String.class) {
                            @Override
                            public String deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException {
                                return StringUtils.trimWhitespace(jsonParser.getValueAsString());
                            }
                        });
    }
}

说明:
@AutoConfigureAfter(WebMvcAutoConfiguration.class) : 表示该配置类在 WebMvcAutoConfiguration (Spring MVC 的自动配置类 )之后进行配置,确保在 Spring MVC 相关配置完成后再进行字符串参数处理配置,防止因依赖问题导致配置失效。

@ControllerAdvice :对所有控制器提供通用功能,@ControllerAdvice 可以与其他注解如 @ExceptionHandler、@ModelAttribute、@InitBinder 等一起使用,处理异常、共享模型数据、进行数据绑定等。这里用于统一处理字符串参数的操作。可参考https://blog.youkuaiyun.com/weixin_44594317/article/details/144723619

@InitBinder 注解的 initBinder 方法 :

  • WebDataBinder 是 Spring MVC 用于数据绑定的核心类,负责将请求参数绑定到 Java 对象。
  • StringTrimmerEditor 是自定义的属性编辑器,构造函数参数 false 表示当字符串为空白时,不将其转换为 null ,而是保留空字符串。
  • binder.registerCustomEditor(String.class, stringTrimmerEditor) 这行代码将自定义的 StringTrimmerEditor 注册到 WebDataBinder 中,作用是在将请求参数绑定到 Java 对象时,对所有 String 类型参数自动去除前后空格 。
So eazy!SpringBoot一键去除参数前后空格和XSS过滤实战解析 在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程) 阅读详情

相关推荐

SpringBoot全局参数处理:自动去除String类型前后空格的三种实战方案

本文详细介绍了SpringBoot中自动去除String类型参数前后空格的三种实战方案,包括ControllerAdvice处理URL/Form参数、Jackson定制化处理JSON参数以及过滤器统一处理所有请求。这些方案能有效避免因用户输入空格导致的业务逻辑错误,提升系统健壮性。文章还提供了生产环境最佳实践建议,帮助开发者选择最适合的方案。

weixin_30613727的博客 430

关于springboot去除参数中前后空格说明

1. 需求 使用SpringBoot使用过滤器去除@RequestBody参数两端的空格;一般我们去普通的请求我们都会对请求参数进行验证。Java也提供了@notNull和@notBlank这种验证方式,但是对@RequestBody 这种只能验证是不是非空,对数据两端的空格未进行处理,同时大家也不想遍历一遍参数然后再处理再封装到对象中,正好项目中有这个需要,所以就参考别的做了Post请求中针对application/json格式的有@RequestBody注解的参数进行了去空格处理 2. 解决方法 2.1

酸奶盖儿的博客 6653

SpringBoot参数处理小技巧:如何优雅地自动去除字符串前后空格(附完整代码)

本文针对SpringBoot应用中常见的参数前后空格问题,提供了多种优雅的自动化解决方案。详细介绍了如何通过@ControllerAdvice、定制Jackson反序列化器以及过滤器等方式,统一处理URL、表单及JSON参数中的字符串空格,并附有完整的配置代码和实战选型建议,帮助开发者构建更健壮的数据接收层。

weixin_29231263的博客 325

SpringBoot去除字符串类型参数的前后空格

在实际的开发过程中,经常会使用String类型的参数,而用户提交给后端的字符串可以说五花八门,""," “,” 123456","123456 “,”  123456 "等等。如果不对这些空格进行处理,不仅会浪费存储空间,还会引起一些不必要的麻烦。 接收String类型的参数通常两种方式: ①.使用url或者form表单的形式 对于这种情况,我们在参数绑定时注册下面的类即可: @RestControllerAdvice public class GlobalHandler { private st

淋雨一直走啊 8393

Spring Boot多数据源配置加密实战:基于Jasypt的全局密钥方案

在微服务与云原生架构中,应用配置管理是保障系统安全的重要环节。配置加密的核心原理在于,通过加密算法将配置文件中的敏感信息(如数据库密码)转换为不可读的密文,仅在应用运行时在内存中动态解密使用,从而避免敏感信息在代码仓库、构建流水线或服务器文件中明文泄露。这项技术的核心价值在于实现安全左移,将数据保护内嵌至开发与部署流程,是满足等保合规与安全审计的基础要求。其典型应用场景包括数据库连接信息、第三方API密钥、消息队列凭证等敏感配置的存储与传递。本文聚焦于Spring Boot项目中广泛使用的Dynamic-D

weixin_34161083的博客 342

Spring Boot中@RequestBody接收字符串的解决方案与原理详解

在Web开发中,HTTP请求体处理是核心技术之一,涉及消息转换器(HttpMessageConverter)的工作机制。消息转换器负责将HTTP请求体中的原始数据(如JSON、XML、文本)转换为后端方法参数所需的Java类型。其核心原理是根据请求的Content-Type和目标参数类型,选择合适的转换器进行反序列化。这一机制的价值在于统一处理多种数据格式,提升开发效率。然而,当使用@RequestBody接收纯字符串时,默认的JSON转换器(如MappingJackson2HttpMessageConve

weixin_30650039的博客 332

SpringBoot-Controller入参去除前后空格

面临测试需求存在着用户输入的参数前后空格需要统一做去除,所以找个通用的解决方案进行统一处理。若需要处理一些特殊字符,例如%字符会穿透like查询查出所有记录的解决方案,可以参考该文,

imVainiycos的博客 3526

Spring Boot 数据校验: Bean Validation 注解、分组校验与全局异常处理

注解作用示例自定义校验器在 Spring Boot 2.3.x 版本中,Bean Validation 参数校验的使用方式与之前版本略有不同,尤其是在错误处理和响应格式的自定义上。从 Spring Boot 2.3 开始,spring-boot-starter-validation 不再默认包含,需要手动添加依赖错误属性的获取方式略有变化,推荐使用 ErrorAttributeOptionsSpring Boot 2.3.x 中推荐使用。

weixin_43833540的博客 1077

Spring Boot部分核心配置与注解

这篇文章主要讲文件的配置和相关注解的使用方法,希望对大家有点帮助。一、全局配置文件全局配置文件能够针对一些默认配置值进行修改。使用application。properties或者application.yaml的文件作为全局配置文件。以上主要讲解了全局配置的使用、配置文件属性值的注入。希望以上所讲的知识能够对大家有所帮助。

2302_82101869的博客 1723

【Java Web】-> Spring Boot -> 配置文件详解

配置文件Ⅰ PropertiesⅡ YAMLA. 介绍B. 基本语法C. 数据类型D. 一个 YAML 的例子Ⅲ 配置提示 Ⅰ Properties Properties 配置文件还是我们惯常的用法,通过等号连接一对键值对。 Spring Boot 会有一个全局的 properties 配置文件 application.properties 来配置 Spring MVC 或者服务器参数之类的配置,这个配置文件的名称是不变的。 Ⅱ YAML A. 介绍 除了 properties 配置文件外,Spring

欢迎来到新世界 625

Spring Boot:基础配置

Spring Boot基础配置介绍

啊Q老师 4696

Spring Boot 全局字段处理最佳实践

Override// 小数位数@Override// 格式化为指定小数位数的字符串} else {通过自定义一个 Spring Boot Starter 和深入利用 Jackson 的定制化能力,我们成功地将一系列琐碎、重复但又非常重要的字段处理逻辑,沉淀为了一个可配置、自动化的基础设施。

郑龙飞 1398

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3921

Spring Boot中使用Convert接口实现类型转换器

1、Date类型 2、TimeStamp类型 2、List对象

huangjhai的博客 1万+

四旋翼无人机控制算法实战:从PID到MPC的路径跟踪

本文深入探讨了四旋翼无人机控制算法的演进路径,从基础的PID控制到高级的MPC算法,详细解析了各类算法的原理、实现技巧及适用场景。通过实战案例对比分析,为开发者提供从算法选型到参数调优的全方位指导,助力提升无人机飞行控制的精度与稳定性。

weixin_29090917的博客 241

ODBC 连接数据库 SQL server 2008

1、打开【控制面板】-> 【系统和安全】 -> 【管理工具】-> 【数据源(ODBC)】  2、双击【数据源(ODBC)】-> 选中【系统DSN】 3、单击【添加】,会弹出如下对话框,选中【SQL server】->【完成】 4、弹出如下对话框,在【名称】中填入数据源名称 例如:我命名为: LocalServer,在【服务器】中填入计算机名或者IP地址,我连接

Christine的专栏 8517

【SpringBoot框架篇】26.集成spring-boot-starter-validation对接口参数校验

文章目录1.常规验证2.使用validation验证2.1.添加依赖2.2.常用注解2.3.在pojo类中添加需要使用的注解2.4.在接口入参处添加@Valid2.5.添加全局异常处理类返回校验错位提示信息 1.常规验证 以下面的登录接口为例,需要手动去验证参数是否存在,这种写法繁琐且不太优雅。 @RestController public class LoginController { @RequestMapping("/login") public String test(@Reque

皓亮君的博客 2585

别再乱刷了!《另一个伊甸》异节、改典、典录获取途径完全梳理,这些隐藏奖励你拿全了吗?

本文全面解析《另一个伊甸》中异节、改典、典录的获取途径,包括断章、外传、精灵试炼等高概率掉落副本,以及隐藏任务、限时活动和特殊挑战。提供高效收集策略和优先级建议,帮助玩家快速获取这些稀缺资源,实现角色真证和上限突破。

weixin_42699679的博客 590

全局配置文件

SpringBoot默认使用application.properties和application.yml作为全局配置文件,启动时自动读取并覆盖默认配置。application.properties采用键值对格式,支持系统属性、环境变量、命令参数及自定义属性,并可配置对象属性、数组、集合等复杂类型。application.yml则采用YAML格式,通过缩进表示层级关系,支持列表、键值对等数据结构,编写时需遵循特定规则。SpringBoot会扫描多个位置的配置文件,优先级从高到低依次为:file:./confi

daqi1983的博客 971

SDA 还是 SDI:SAP HANA 数据虚拟化与数据集成的取舍、组合与实战

结论先放在前面:SDA 面向数据虚拟化与联邦查询,强调不落地、不复制、按需实时访问;SDI 面向数据集成与复制,强调抽取、转换、装载与近实时增量同步。两者共享 Remote Source 与 Adapter 的理念,但侧重点与运行时组件明显不同。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 585

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 159

spring-boot web项目常用配置

spring-boot web项目常用配置

weixin_45817985的博客 400

STM32实现等精度测频

上一章介绍了利用STM32的TIM的捕获功能实现频率测量的方法,但测量误差受被测信号频率的影响,不适合测量频率变化较大的。本章将介绍等精度测频的方法以及STM32的实现。STM3...

zhang062061的专栏 3457

spring使用validation参数及全局异常检测

Spring框架对Java Bean Validation API提供了很好的支持,允许你很容易地在Spring应用程序中进行数据验证。通过Validation结合全局异常拦截器,可以非常优雅实现对请求参数进行验证,并对异常进行二次转义,使之符合客户端响应标准。

littleschemer的博客 1568

工业相机的检测原理课件(建议收藏)

本课件为各位工程师详细介绍了工业相机的视觉检测原理 ,旨在为工程师调试工业相机的视觉检测原理时提供理论性指导。

Bamboo265925的博客 498

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

springboot设置默认值_Spring Boot 配置文件详解

Spring Boot配置文件详解Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件。他们的作用都是修改Spring Boot自动配置的默认值。相对于properties文件而言,yml文件更年轻,也有很多的坑。可谓成也萧何败也萧何,yml通过空格来确定层级关系,使配置文件结构更清晰,但也会因为微不足道的空格而破坏了层级关系。本章重点介绍yml的语法和从配置...

weixin_39926191的博客 5747

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Spring Boot接口返回Long类型的数据时丢失精度的全局处理
村口老师傅
博客等级 码龄9年 67粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值