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");
}
}