之前在學習servlet和jsp時學習了過濾器Filter,使用過濾器需要實作Filter介面,它能夠在請求到servlet之前攔截請求,并且根據需求對請求進行相應的處理,
攔截器跟過濾器非常相似,SpringMVC攔截器是通過實作HandlerInterceptor介面實作的,它其實是AOP的一種應用,
這個介面與三個方法,我們來看一下原始碼:
public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { } default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { } }
preHandle是在Handler執行之前執行;
postHandle是在Handler執行成功之后執行;
afterCompletion是在請求處理完畢后執行,
下面我們來具體實作一下:
實作介面:
public class UserInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); if (session.getAttribute("UserName") != null) { return true; } response.sendRedirect("/tlp"); 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 { } }
return true是給其他攔截器放行,
在Spring組態檔中配置攔截器:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/user/**"/> <bean class="com.jms.config.UserInterceptor"/> </mvc:interceptor> </mvc:interceptors>
這里是對/user下面的所有請求進行攔截,
(本文僅作個人學習記錄用,如有紕漏敬請指正)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518920.html
標籤:Java
下一篇:Java實作7種常見密碼演算法
