簡體   English   中英

Spring MVC 執行順序:過濾器和攔截器

[英]Spring MVC Execution Order: Filter and Interceptor

我正在開發一個 spring MVC 應用程序,它使用一個實現javax.servlet.Filter的過濾器和一個擴展org.springframework.web.servlet.handler.HandlerInterceptorAdapter的攔截器。

據我所知,Spring MVC的控制流程是這樣的:

  1. 請求到達DispatcherServlet
  2. DispatcherServlet將其發送到Interceptor並執行覆蓋的preHandle方法。
  3. 請求到達匹配的控制器。
  4. 處理完請求后,如果攔截器的postHandle方法也被覆蓋,Spring 就會執行它的代碼。
  5. DispatcherServlet使用視圖解析器並將模型發送到視圖,渲染它。

做一些測試我可以看到我的過濾器總是在preHandle方法之前執行。 它似乎是DispatcherServlet之后第一個執行的東西。 沒關系,但我沒有找到這種行為的原因。 有好的解釋的人嗎?

謝謝!

更新:可能性:這是因為過濾器是在web.xml定義的(如DispatcherServlet )所以過濾器在DispatcherServlet之前執行?

這很好,因為Filter's是 Servlet 規范Filter's一部分。

Filters由您的Server(tomcat)調用。 而攔截器由Spring調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM