好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

1.自定义转换器类

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

* 自定义转换器

* 去掉前后空格

* @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容器处理

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

@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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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、空格过滤器

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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、过滤器初始化

?

1

2

3

4

5

6

7

8

9

10

11

12

@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

查看更多关于使用Springboot自定义转换器实现参数去空格功能的详细内容...

  阅读:18次