2023-01-21 一、攔截器與過濾器的區別 1、過濾器(Filter)屬於web伺服器組件 (1)過濾器主要作用:過濾Servlet請求 (2)執行時機:兩處執行時機(Servlet前、Servlet後) 2、攔截器(Interceptor)屬於框架(springMVC) (1)攔截器主要作用: ...
2023-01-21
一、攔截器與過濾器的區別
1、過濾器(Filter)屬於web伺服器組件
(1)過濾器主要作用:過濾Servlet請求
(2)執行時機:兩處執行時機(Servlet前、Servlet後)
2、攔截器(Interceptor)屬於框架(springMVC)
(1)攔截器主要作用:攔截Controller請求
(2)執行時機:三處執行時機
①執行DispatcherServlet之後,Controller之前
②執行Controller之後,DispatcherServlet之前
③執行DispatcherServlet之後
二、攔截器概述
1、SpringMVC可以使用攔截器實現攔截Controller請求,用戶可以自定義攔截器來實現特定功能
2、實現攔截器兩種方式
(1)實現介面:HandlerInterceptor
(2)繼承適配器類:HandlerInterceptorAdapter
3、攔截器中三個方法
(1)preHandler():這個方法在業務處理器處理請求之前被調用,可以在此方法中做一些許可權的校驗。如果程式員決定該攔截器對請求進行攔截處理後還要調用其他的攔截器,或者是業務處理器去進行處理,則返回true;如果程式員決定不需要再調用其他組件去處理請求,則返回false.
(2)postHandler():這個方法在業務處理器處理請求之後,渲染視圖之前調用。在此方法中可以對ModelAndView中的模型和視圖進行處理。
(3)afterCompletion():這個方法在DispatcherServlet完全處理完請求後被調用,可以在該方法中進行一些資源清理的操作。
三、實現攔截器步驟
1、實現介面:HandlerInterceptor
2、重寫三個方法
@Component public class MyInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(" MyInterceptor==>preHandle " ); return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { System.out.println(" MyInterceptor==>postHandle " ); } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { System.out.println(" MyInterceptor==>afterCompletion " ); } }
3、在springmvc.xml配置文件中,裝配攔截器
<!-- 裝配攔截器--> <mvc:interceptors> <ref bean="myInterceptor"></ref> </mvc:interceptors>