使用Springboot自定义转换器实现参数去空格功能

网友投稿 313 2022-10-05


使用Springboot自定义转换器实现参数去空格功能

目录自定义转换器实现参数去空格1.自定义转换器类2.将转换器交给spring容器处理SpringBoot请求参数过滤空格1、参数修改SpaceHttpServletRequestWrapper2、空格过滤器3、过滤器初始化

自定义转换器实现参数去空格

1.自定义转换器类

实现Converter类,重写convert()方法,直接上代码。

/**

* 自定义转换器

* 去掉前后空格

* @author liuy

* @version 2018年11月13日

*/

public class CustomConverter implements Converter{

@Override

public String convert(String source) {

try {

if(source != null){

source = source.trim();

if(!"".equals(source)){

return source;

}

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

2.将转换器交给spring容器处理

@Configuration

public class SpringdataConvert {

@Autowired

private RequestMappingHandlerAdapter requestMappingHandlerAdapter;

@PostConstruct

public void addConversionConfig(){

ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) requestMappingHandlerAdapter.getWebBindingInitializer();

if(initializer.getConversionService()!=null){

GenericConversionService genericConversionService =(GenericConversionService) initializer.getConversionService();

genericConversionService.addConverter(new CustomConverter());

}

}

}

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[ilCAyJAo].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;

}

http:// @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;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网安实验室 | 红队服务之内网渗透(网安实验室建设标准)
下一篇:时代新威正式启用新版等保测评资质证书,升级为网络安全等级测评与检测评估机构
相关文章

 发表评论

暂时没有评论,来抢沙发吧~