软件编程
位置:首页>> 软件编程>> java编程>> 使用Springboot自定义转换器实现参数去空格功能

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

作者:CherishLy0  发布时间:2021-11-12 03:36:29 

标签:Springboot,转换器,参数,空格

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

1.自定义转换器类

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


/**
* 自定义转换器
* 去掉前后空格
* @author liuy
* @version 2018年11月13日
*/
public class CustomConverter implements Converter<String, String>{
@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[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;
   }
}

来源:https://blog.csdn.net/weixin_41270375/article/details/84029562

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com