最近在做一個養老院的項目,自己做的攔截器,希望能幫助上大家
下面直接把代碼粘出來。
首先先新建一個CustomWebMvcConfigurerAdapter 類
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login/**"); //對來自/user/** 這個鏈接來的請求進行攔截
// super.addInterceptors(registry);
}
}
再寫一個LoginInterceptor類,對每次請求的接口進行判斷,三次判斷
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String string = request.getRequestURL().toString();
System.out.println("請求url:"+string);
String uri = request.getRequestURL().toString();
if (uri.contains("login")) {
return true;
}
// a)攔截用戶請求,判斷用戶是否登錄
HttpSession session = request.getSession();
Object username = session.getAttribute("username");
if (username != null) {
// b)如果用戶已經登錄。放行
return true;
}
// c)如果用戶未登錄,跳轉到登錄頁面。
System.out.println("session用戶過期跳轉登錄頁面!");
response.sendRedirect(request.getContextPath() + "/controller/login");
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
//handle執行之後,返回ModelAndView之前。
//System.out.println("Interceptor1 postHandle......handle執行之後,返回ModelAndView之前。");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// 返回ModelAndView之後。
//可以在此處理異常
//System.out.println("Interceptor1 afterCompletion......返回ModelAndView之後, 在此處理異常");
}
希望幫助上大家,第一次發自己寫的東西,多多支持。