springBoot 配置接收 String 参数时自动去除前后空格

前言

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

1. 配置

1.1 接收 url 或 form 表单中的参数(get请求

对于这种情况,Spring MVC 提供了一个 org.springframework.beans.propertyeditors.StringTrimmerEditor 类,我们只需要在参数绑定中进行注册就行,方式如下

// 必须标记 @ControllerAdvice
@ControllerAdvice
public class ControllerStringParamTrimConfig {
   
   
	@InitBinder
    public void initBinder(WebDataBinder binder) {
   
   
        StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(true);
        binder.registerCustomEditor(String.class, stringTrimmerEditor);
    }
}

1.2 接收Request Body中JSON或XML对象参数(post请求

Spring MVC 是使用 Jackson 对参数进行反序列化,所以对于 String 的处理是在 Jackson 中配置

@Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer2() {
   
   
        return jacksonObjectMapperBuilder -> {
   
   
            // 为 String 类型自定义反序列化操作
            jacksonObjectMapperBuilder
                    .deserializerByType(String.class, new StdScalarDeserializer<String>(String.class) {
   
   
                        @Override
                        public String deserialize(JsonParser jsonParser, DeserializationContext ctx)
                                throws IOException {
   
   
                            // 去除前后空格
                            String data = StringUtils.trimWhitespace(jsonParser.getValueAsString());
                            // 如果为空返回 null
                            return StrUtil.isBlank(data) ? null : data;
                        }
                    });
        };
    }

2. 测试

2.1 Controller

@RestController
public class SpringTrimController {
   
   

    @GetMapping("/url")
    public String urlParam(String</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值