Servlet和filter的區別

在學習java EE的過程中,我們一定會接觸這兩個小傢伙,而且面試過程中也是常見考題,那麼他們究竟是什麼

Servlet:是一種運行在服務器端的1java應用程序,具有平臺獨立性和協議的特性,可以動態的生成web頁面,位於客戶端請求和服務器響應的中間層。servlet的主要功能有:

       (1) 創建並返回一個包含基於客戶請求性質的動態內容的完整的 HTML頁面。
  (2) 創建可嵌入到現有 HTML 頁面中的一部分 HTML 頁面(HTML 片段)。
  (3) 與其它服務器資源(包括數據庫和基於 Java 的應用程序)進行通信。
  (4) 用多個客戶機處理連接,接收多個客戶機的輸入,並將結果廣播到多個客戶機上。例如,Servlet 可以是多參與者的遊戲服務器。
  (5) 當允許在單連接方式下傳送數據的情況下,在瀏覽器上打開服務器至applet的新連接,並將該連
接保持在打開狀態。當允許客戶機和服務器簡單、高效地執行會話的情況下,applet也可以啓動客戶瀏覽器和服務器之間的連接。可以通過定製協議或標準(如 IIOP)進行通信。
  (6) 對特殊的處理採用 MIME 類型過濾數據,例如圖像轉換和服務器端包括(SSI)。
  (7) 將定製的處理提供給所有服務器的標準例行程序。例如,Servlet 可以修改如何認證用戶。

servlet的生命週期:servlet的生命週期始於將他裝入web服務器的內存時,並在終止或重新裝入Servlet時結束

        (1)、裝入:啓動服務器時加載Servlet的實例;
        (2)、初始化:web服務器啓動時或web服務器接收到請求時,或者兩者之間的某個時刻啓動。初始化工作有init()方法負責執行完成;
        (3)、調用:從第一次到以後的多次訪問,都是隻調用doGet()或doPost()方法;
        (4)、銷燬:停止服務器時調用destroy()方法,銷燬實例。 

Filter:filter是一個可以複用的代碼片段,可以用來轉換Http請求、響應和頭信息,它使用戶可以改變一個request和修改response,Filter不是Servlet,他不能產生一個response,他能夠在一個request到達servlet之前預處理request,也可以在離開Servlet時,處理response

filter的功能:

1)、在servlet被調用之前截獲;
2)、在servlet被調用之前檢查servlet request;
3)、根據需要修改request頭和request數據;
4)、根據需要修改response頭和response數據;
5)、在servlet被調用之後截獲.

Filter的生命週期:(一定要實現javax.servlet包的Filter接口的三個方法init()、doFilter()、destroy(),空實現也行)
        (1)、啓動服務器時加載過濾器的實例,並調用init()方法來初始化實例;
        (2)、每一次請求時都只調用方法doFilter()進行處理;

        (3)、停止服務器時調用destroy()方法,銷燬實例。

兩者之間的區別:

1、servlet流程是短的,url傳來之後對其進行處理,之後返回或者轉向某一自己定義的頁面,他主要用來在業務處理之前進行控制

2、filter 流程是線性的, url傳來之後,檢查之後,可保持原來的流程繼續向下執行,被下一個filter, servlet接收等,而servlet 處理之後,不會繼續向下傳遞。filter功能可用來保持流程繼續按照原來的方式進行下去,或者主導流程,而servlet的功能主要用來主導流程。

 filter可用來進行字符編碼的過濾,檢測用戶是否登陸的過濾,禁止頁面緩存等

https://blog.csdn.net/xiaojie119120/article/details/73274759

https://blog.csdn.net/sundenskyqq/article/details/8549932

 

Spring的Interceptor和Servlet的filter有什麼區別?

(1)攔截器是基於java反射實現的,過濾器是基於函數回調的

(2)Filter的執行順序是按照.xml文件配置的順序執行,Interceptor可以按照順序執行,也可以通過order控制

(3)Filter由servlet容器支持,Interceptor由Spring框架支持

(4)Filter只能使用在Web程序上,Intercepter還可以應用於Application和Swing程序

(5)Filter只能在Servlet前後使用,攔截器能夠深入到方法前後,異常拋出前後等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章