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

 更新时间:2021年08月14日 11:58:27   作者:CherishLy0  
这篇文章主要介绍了使用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;
    }
}

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

相关文章

  • MyBatis-Plus简介和快速入门教程

    MyBatis-Plus简介和快速入门教程

    MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做修改,为简化开发、提高效率而生,本文给大家介绍MyBatis-Plus简介和快速入门教程,需要的朋友参考下吧
    2021-09-09
  • SpringBoot框架底层原理解析

    SpringBoot框架底层原理解析

    这篇文章主要介绍了SpringBoot底层原理,包括配置优先级的配置方式给大家讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • Action访问Servlet的API的简单实例

    Action访问Servlet的API的简单实例

    下面小编就为大家带来一篇Action访问Servlet的API的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 全面汇总SpringBoot和SpringClould常用注解

    全面汇总SpringBoot和SpringClould常用注解

    Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能,这篇文章就带你来了解一下
    2021-08-08
  • Java接口和抽象类的区别深入剖析

    Java接口和抽象类的区别深入剖析

    这篇文章主要介绍了Java接口和抽象类的区别,对于Java的初学者来说是需要准确掌握的概念!
    2014-07-07
  • Java测试框架Mockito的简明教程

    Java测试框架Mockito的简明教程

    这篇文章主要介绍了Java测试框架Mockito的简明教程,Mock 测试是单元测试的重要方法之一。本文介绍了基于 Java 语言的 Mock 测试框架 – Mockito 的使用。,需要的朋友可以参考下
    2019-06-06
  • SpringBoot整合Spring Batch示例代码

    SpringBoot整合Spring Batch示例代码

    这篇文章主要来和大家一起探讨一下SpringBoot如何整合Spring Batch,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • java解析Excel/导入信息到Excel方式

    java解析Excel/导入信息到Excel方式

    这篇文章主要介绍了java解析Excel/导入信息到Excel方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java中文件管理系统FastDFS详解

    Java中文件管理系统FastDFS详解

    这篇文章主要介绍了Java中文件管理系统FastDFS详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java排序算法之选择排序

    Java排序算法之选择排序

    这篇文章主要介绍了Java排序算法之选择排序,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05

最新评论