如何自定義一個攔截器
阿新 • • 發佈:2018-12-05
1、自定義攔截器類,實現HandlerInterceptor介面,並重寫抽象方法進行攔截器的攔截邏輯
// return true表示放行, return false表示攔截 public class Interceptor1 implements HandlerInterceptor{ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { log.info("preHandle:請求前呼叫"); //返回 false 則請求中斷 //判斷使用者是否登陸 如果沒有登陸 重定向到登陸頁面 不放行 如果登陸了 就放行了 String requestURI = request.getRequestURI(); if(!requestURI.contains("/login")){ String username = (String) request.getSession().getAttribute("USER_SESSION"); if(null == username){ response.sendRedirect(request.getContextPath() + "/login.action"); return false; } } return true; } public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { log.info("postHandle:請求後呼叫"); } public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { log.info("afterCompletion:請求呼叫完成後回撥方法,即在檢視渲染完成後回撥"); } }
2、在springmvc配置檔案中進行配置
<!-- Springmvc的攔截器 --> <mvc:interceptors> <!-- 多個攔截器 --> <mvc:interceptor> <!-- 對什麼url路徑進行攔截 /**代表對全路徑攔截 --> <mvc:mapping path="/**"/> <!-- 自定義的攔截器類 --> <bean class="com.iss.springmvc.interceptor.Interceptor1"/> </mvc:interceptor> </mvc:interceptors>