SpringMVC攔截器(框架獨有)
SpringMVC攔截器類似於Servlet開發中的過濾器Filter,用於對處理器進行預處理和后處理,開發者可以自己定義一些攔截器來實現這些特定功能
過濾器和攔截器的區別:攔截器是AOP思想的具體應用
過濾器、攔截器、監聽器
過濾器(Filter)
當你有一堆東西的時候,你只希望選擇符合你要求的某一些東西。定義這些要求的工具,就是過濾器。
攔截器(Interceptor)
在一個流程正在進行的時候,你希望干預它的進展,甚至終止它進行,這是攔截器做的事情。
監聽器(Listener)
當一個事件發生的時候,你希望獲得這個事件發生的詳細信息,而並不想干預這個事件本身的進程,這就要用到監聽器。
代碼實現
<mvc:interceptors>
/ 只過濾當前文件下的一個請求 /a
/** 包括這個請求下所有請求 /a/b/c/d
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.ji.config.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
package com.ji.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor{
//return true會執行下一個攔截器(放行)chain.doFilter(req,resp);
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println ("======================處理前=====================");
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println ("======================處理后=====================");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println ("======================清理======================");
}
}
/*
======================處理前===================== //攔截器
testController方法執行了
======================處理后===================== //攔截日志
======================清理====================== //攔截日志
*/
