Interceptor

public class TestInterceptor implements HandlerInterceptor{

    /*在執行Controller的任務之前判斷是否有Session信息
      如果有Session信息就往下執行,去調用Controller。
      如果沒有Session就跳轉到登錄頁面
    */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        HttpSession session=request.getSession();
        if(session.getAttribute("User")!=null){
            return true;
        }
        String url = "/login.html";
        request.getRequestDispatcher(url).forward(request,response);
        return false;
    }

    @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 TestWebConfig extends WebMvcConfigurationSupport {

    @Bean
    public TestInterceptor getTestInterceptor(){
        return new TestInterceptor();
    }

    public void addInterceptors(InterceptorRegistry registry) {
        
         /**調用我們創建的TestInterceptor。
         * addPathPatterns("/api/**)的意思是這個鏈接下的都要進入到TestInterceptor裏面去執行
         * excludePathPatterns("/login")的意思是login的url可以不用進入到TestInterceptor中,直接
         * 放過執行。
         */
        registry.addInterceptor(getTestInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/login");
        
    }

}

 

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