日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web之filter、listener、Interceptor

發布時間:2023/12/4 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,可以通過以下三種方式來實現

  • 實現 Servlet 接口
  • 繼承 GenericServlet 類
  • 繼承 HttpServlet 類
  • 它們的 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 相關接口

  • ServletContextListener:用于監聽 ServletContext 的啟動和銷毀。
  • ServletContextAttributeListener:用于監聽 application 范圍的屬性變化。
  • 第二類,HttpSession 相關接口

  • HttpSessionListener:用于監聽 session 的創建和銷毀。
  • HttpSessionIdListener:用于監聽 session 的 id 是否被更改。
  • HttpSessionAttributeListener:用于監聽 session 范圍的屬性變化。
  • HttpSessionActivationListener:用于監聽綁定在 HttpSession 對象中的 JavaBean 狀態。
  • HttpSessionBindingListener:用于監聽對象與 session 的綁定和解綁。
  • 第三類,ServletRequest 相關接口

  • ServletRequestListener:用于堅挺 ServletRequest 對象的初始化和銷毀。
  • ServletRequestAttributeListener:用于監聽 ServletRequest 對象的屬性變化。
  • **

    4、攔截器Interceptor(Spring MVC)

    **

    類似 面向切面編程 中的 切面 和 通知,我們通過 動態代理 對一個 service() 方法添加 通知 進行功能增強。比如說在方法執行前進行 初始化處理,在方法執行后進行 后置處理。攔截器 的思想和 AOP 類似,區別就是 攔截器 只能對 Controller 的 HTTP 請求進行攔截。

    **

    5、過濾器 VS 攔截器

    **
    5.1 兩者的區別

  • Filter 是基于 函數回調的,而 Interceptor 則是基于 Java 反射 和 動態代理。
  • Filter 依賴于 Servlet 容器,而 Interceptor 不依賴于 Servlet 容器。
  • Filter 對幾乎 所有的請求 起作用,而 Interceptor 只對 Controller 對請求起作用。
  • 5.2 執行順序
    對于自定義 Servlet 對請求分發流程:

  • Filter 過濾請求處理;
  • Servlet 處理請求;
  • Filter 過濾響應處理。
  • 對于自定義 Controller 的請求分發流程:

  • Filter 過濾請求處理;
  • Interceptor 攔截請求處理;
  • 對應的 HandlerAdapter 處理請求;
  • Interceptor 攔截響應處理(postHandle());
  • Interceptor 的最終處理(afterCompletion());
  • Filter 過濾響應處理。
  • 總結

    以上是生活随笔為你收集整理的Java Web之filter、listener、Interceptor的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。