使用SpringBoot请求参数过滤空格

 更新时间:2021年08月14日 16:42:17   作者:HealerJean.  
这篇文章主要介绍了使用SpringBoot请求参数过滤空格的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot请求参数过滤空格

1、参数修改SpaceHttpServletRequestWrapper

public class SpaceHttpServletRequestWrapper extends HttpServletRequestWrapper {
    public SpaceHttpServletRequestWrapper(HttpServletRequest servletRequest) {
        super(servletRequest);
    }
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
        if (values == null) {
            return new String[0];
        }
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = values[i].trim();
        }
        return encodedValues;
    }
    @Override
    public String getParameter(String parameter) {
        String value = super.getParameter(parameter);
        if (value == null) {
            return null;
        }
        return value.trim();
    }
}

2、空格过滤器

public class SpaceFilter implements Filter {
    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws
            IOException, ServletException {
        filterChain.doFilter(new SpaceHttpServletRequestWrapper(
                (HttpServletRequest) servletRequest), servletResponse);
    }
    @Override
    public void destroy() {
        this.filterConfig = null;
    }
}

3、过滤器初始化

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
    @Bean
    public FilterRegistrationBean spaceFilter() {
        FilterRegistrationBean fitler = new FilterRegistrationBean();
        fitler.setFilter(new SpaceFilter());
        fitler.addUrlPatterns("/*");
        fitler.setName("SpaceFilter");
        fitler.setDispatcherTypes(DispatcherType.REQUEST);
        return fitler;
    }
}

SpringBoot指定执行参数,参数值包含空格问题

SpringBoot启动参数可以通过 --key1=value1 这样设置,如下:

java -jar xx.jar --server.port=9301

但是对于有空格的参数,比如 sync.email.cron=0 0 9 * * ?,如何设置?

  • 我的环境:windows

方式一(错误):

java -jar xx.jar --sync.email.cron=0 0 9 * * ?

方式二(错误):

set mailCron=0 0 9 * * ?
java -jar xx.jar --sync.email.cron=%mailCron%

方式三(错误):

set mailCron=`0 0 9 * * ?`
java -jar xx.jar --sync.email.cron=%mailCron%

等同于

java -jar xx.jar --sync.email.cron=`0 0 9 * * ?`

方式四(错误):

set mailCron='0 0 9 * * ?'
java -jar xx.jar --sync.email.cron=%mailCron%

等同于

java -jar xx.jar --sync.email.cron='0 0 9 * * ?'

方式五(正确):

set mailCron="0 0 9 * * ?"
java -jar xx.jar --sync.email.cron=%mailCron%

等同于

java -jar xx.jar --sync.email.cron="0 0 9 * * ?"

如上,正确的方式只有想办法将带有空格的字符串用双引号包起来,而直接设置、反引号设置、单引号设置都会将字符串分割开来,都是不正确的。Linux下也同样适用。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Servlet输出中文乱码问题解决方案

    Java Servlet输出中文乱码问题解决方案

    这篇文章主要介绍了Java Servlet输出中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java中的线程安全问题详细解析

    Java中的线程安全问题详细解析

    这篇文章主要介绍了Java中的线程安全问题详细解析,线程安全是如果有多个线程在同时运行,而这些线程可能会同时运行这段代码,程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,此时我们就称之为是线程安全的,需要的朋友可以参考下
    2023-11-11
  • ChatGpt都使用的Java BPE分词算法不要了解一下

    ChatGpt都使用的Java BPE分词算法不要了解一下

    Byte Pair Encoding(BPE)是一种文本压缩算法,它通常用于自然语言处理领域中的分词、词汇表构建等任务,本文将对 BPE 算法进行全面、详细的讲解,并提供 Java 相关的代码示例,希望对大家有所帮助
    2023-06-06
  • Java基于Socket的文件传输实现方法

    Java基于Socket的文件传输实现方法

    这篇文章主要介绍了Java基于Socket的文件传输实现方法,结合实例分析了Java使用Socket实现文件传输的建立连接、发送与接收消息、文件传输等相关技巧,需要的朋友可以参考下
    2015-12-12
  • Java Springboot全局异常处理

    Java Springboot全局异常处理

    这篇文章主要给大家介绍了关于Springboot全局异常处理的资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-11-11
  • Java详解ScriptEngine接口动态执行JS脚本

    Java详解ScriptEngine接口动态执行JS脚本

    ScriptEngine是基本接口,其方法必须在本规范的每个实现中完全起作用。这些方法提供基本脚本功能。 写入这个简单接口的应用程序可以在每个实现中进行最少的修改。 它包括执行脚本的方法,以及设置和获取值的方法
    2022-08-08
  • 浅谈Mybatis乐观锁插件

    浅谈Mybatis乐观锁插件

    这篇文章主要介绍了浅谈Mybatis乐观锁插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 如何使用IDEA查看java文件编译后的字节码内容

    如何使用IDEA查看java文件编译后的字节码内容

    这篇文章主要介绍了如何使用IDEA查看java文件编译后的字节码内容,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java在控制台输出带颜色字符的2种方式详解

    Java在控制台输出带颜色字符的2种方式详解

    这篇文章主要给大家介绍了关于Java在控制台输出带颜色字符的2种方式,文中通过实例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • mybatisplus如何实现排序

    mybatisplus如何实现排序

    这篇文章主要介绍了mybatisplus如何实现排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论