Java Web之filter、listener、Interceptor
**
1、Servlet
**
Servlet 是服務端的 Java 應用程序,用于處理HTTP請求,做出相應的響應。
當客戶端向服務器發出HTTP請求時,首先會由服務器中的 Web 容器(如Tomcat)對請求進行路由,交給該URL對應的 Servlet 進行處理,Servlet 所要做的事情就是返回適當的內容給用戶。
在這里,我順便談談自己對 JSP 和 Servlet 兩者關系的理解。JSP 頁面實際是被轉換成了 Servlet 的形式運行,也就是說,我們可以將不同的 JSP 頁面視為不同的 Servlet,理論上它們中的每一個都能夠對客戶端請求做出響應,只不過這些 Servlet 可能會將請求轉發給其它 Servlet 進行處理,進而由其它 Servlet 做出響應。
要創建自己的 Servlet,可以通過以下三種方式來實現
它們的 package 分別是:javax.servlet.Servlet、javax.servlet.GenericServlet、javax.servlet.http.HttpServlet。
**
2、Filter(過濾器)
**
Filter 是介于 Web 容器和 Servlet 之間的過濾器,用于過濾未到達 Servlet 的請求或者由 Servlet 生成但還未返回響應。
客戶端請求從 Web 容器到達 Servlet 之前,會先經過 Filter,由 Filter 對 request 的某些信息進行處理之后交給 Servlet。
同樣,響應從 Servlet 傳回 Web 容器之前,也會被 Filter 攔截,由 Filter 對 response 進行處理之后再交給 Web 容器。
若要創建自定義 Filter,需要實現 javax.servlet.Filter 接口。
**
3、Listener(監聽器)
**
Listener 是用于監聽某些特定動作的監聽器。當特定動作發生時,監聽該動作的監聽器就會自動調用對應的方法。
以 HttpSessionListener 為例:
該 Listener 監聽 session 的兩種狀態,即創建和銷毀。當 session 被創建時,會自動調用 HttpSessionListener 的 sessionCreated() 方法,我們可以在該方法中添加一些處理邏輯。當 session 被銷毀時,則會調用 sessionDestroyed() 方法。
下面是 Servlet 中的 8 個 Listener 接口,可分為三類:
第一類,ServletContext 相關接口
第二類,HttpSession 相關接口
第三類,ServletRequest 相關接口
**
4、攔截器Interceptor(Spring MVC)
**
類似 面向切面編程 中的 切面 和 通知,我們通過 動態代理 對一個 service() 方法添加 通知 進行功能增強。比如說在方法執行前進行 初始化處理,在方法執行后進行 后置處理。攔截器 的思想和 AOP 類似,區別就是 攔截器 只能對 Controller 的 HTTP 請求進行攔截。
**
5、過濾器 VS 攔截器
**
5.1 兩者的區別
5.2 執行順序
對于自定義 Servlet 對請求分發流程:
對于自定義 Controller 的請求分發流程:
總結
以上是生活随笔為你收集整理的Java Web之filter、listener、Interceptor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 月销20万辆的奇瑞,还能否赶上新能源的末
- 下一篇: Java web之web.xml配置详解