SpringMVC過濾器、攔截器與監聽器的區別

1、過濾器:

  • 依賴於servlet容器;
  • 在實現上基於函數回調,可以對幾乎所有請求進行過濾;
  • 缺點是一個過濾器實例只能在容器初始化時調用一次;
  • 使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取的數據,比如:在過濾器中修改字符編碼;在過濾器中修改HttpServletRequest的一些參數,包括:過濾低俗文字、危險字符等。

2、攔截器:

  • 依賴於web框架,在SpringMVC中就是依賴於SpringMVC框架;
  • 在實現上基於Java的反射機制,屬於面向切面編程(AOP)的一種運用;
  • 缺點是隻能對controller請求進行攔截,對其他的一些比如直接訪問靜態資源的請求則沒辦法進行攔截處理;
  • 由於攔截器是基於web框架的調用,因此可以使用Spring的依賴注入(DI)進行一些業務操作,同時一個攔截器實例在一個controller生命週期之內可以多次調用。

3、監聽器

  • 實現了javax.servlet.ServletContextListener 接口的服務器端程序;
  • 隨web應用的啓動而啓動;
  • 只初始化一次;
  • 隨web應用的停止而銷燬;
  • 主要作用是: 做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。如SpringMVC的監聽器org.springframework.web.context.ContextLoaderListener,實現了SpringMVC容器的加載、Bean對象創建、DispatchServlet初始化等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章