阿忍

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.拦截器问题

  到2.0之后在配置文件中写 static-path-pattern: /static/** 已经不起作用(2.0需要在方法中配置)

 

 SpringBoot1.*写法


@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    private final UserMethodArgumentResolver userMethodArgumentResolver;
    @Autowired
    public JwtInterceptor(UserMethodArgumentResolver userMethodArgumentResolver) {
        this.userMethodArgumentResolver = userMethodArgumentResolver;

    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getWebmvcConfig())
                .addPathPatterns("/**")//拦截
                .excludePathPatterns("/",//排除拦截
          "/login/**"); super.addInterceptors(registry); } @Bean public WebmvcConfig getWebmvcConfig() { return new WebmvcConfig(); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(userMethodArgumentResolver); } }

 SpringBoot2.0写法

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    private static final Logger LOGGER = LoggerFactory.getLogger(WebMvcConfig.class);


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {//设置资源路径
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new JwtInterceptor())
                .addPathPatterns("/**")//拦截
                .excludePathPatterns("/",//排除拦截"/login/**","/static/**");
    }

}

 

2.编码问题

  页面访问不会出现乱码现象,但是Ajax请求返回的中文会出现乱码,经过排查是由于 ResponseBody 引用 StringHttpMessageConverter 这个类,而此类默认编码为ISO_8859_1,我们需要更改为UTF-8。

此代码段放到继承 WebMvcConfigurationSupportl 类的 WebMvcConfig 类下

 

    /**
     * 设置默认编码为UTF-8
     */
    @Bean
    public HttpMessageConverter<String> responseBodyConverter() {
        final StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
        converter.setWriteAcceptCharset(false);
        return converter;
    }
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(responseBodyConverter());
        addDefaultHttpMessageConverters(converters);
    }
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }

  默认的 StringHttpMessageConverter 会加上 Accept-Charset 响应头并带上所有的字符集,需要设置一下

  converter.setWriteAcceptCharset(false);






 

posted on 2019-03-22 11:24  阿忍  阅读(273)  评论(0编辑  收藏  举报