这篇文章主要讲解了“SpringBoot请求参数过滤空格的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot请求参数过滤空格的方法”吧!
SpringBoot请求参数过滤空格
1、参数修改SpaceHttpServletRequestWrapper
2、空格过滤器
3、过滤器初始化
SpringBoot指定执行参数,参数值包含空格问题
方式一(错误):
方式二(错误):
方式三(错误):
方式四(错误):
方式五(正确):
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(); } }
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; } }
@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启动参数可以通过 --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下也同样适用。
感谢各位的阅读,以上就是“SpringBoot请求参数过滤空格的方法”的内容了,经过本文的学习后,相信大家对SpringBoot请求参数过滤空格的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。