springboot語言包的過濾器和攔截器的簡單實現

 SpringBoot2.0之後攔截器配置需要實現WebMvcConfigure接口

執行順序:過濾器-->攔截器:preHandle-->controller -->攔截器:視圖渲染前-->postHandler-->攔截器:視圖渲染-->afterCompletion
@Component
public class LangFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        Locale locale = request.getLocale();
        System.out.println("過濾器: " + locale);
        chain.doFilter(request,response);
    }

    @Override
    public void destroy() {

    }
}
@Component
public class LangInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Locale locale = request.getLocale();
        System.out.println("攔截器: " + locale);
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

註冊攔截器,實現攔截器最重要的步驟(和)啓動類處於同一目錄下):

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    // 這裏使用autowired無法實現攔截器
    @Bean
    LangInterceptor langInterceptor() {
        return new LangInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(langInterceptor()).addPathPatterns("/**");
    }
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章