servlet和filter的區別


從四個方面來區分:

概念

  servlet是一種運行在服務器端的Java應用程序,獨立於平台和協議,可以動態的生成web頁面,它工作於客戶端請求和服務器的中間層

  filter是一個可以復用的代碼片段,可以用來轉換請求,響應以及頭信息,filter不能產生請求和響應,他只能在請求到達servlet之前對請求進行修改,或者在請求返回客戶端之前對響應進行處理

生命周期

  servlet是在系統啟動或者請求到達servlet時,通過init()方法進行初始化,一旦被裝入了web服務器,一般不會從Web服務器刪除,直到服務器關閉才會調用  destroy()方法進行銷毀。每次請求,Request都會被初始化,響應請求后,請求被銷毀。但是servlet不會隨着請求的銷毀而銷毀

  如果某個Servlet配置了 <load-on-startup >1 </load-on-startup >,該Servlet也是在Tomcat(Servlet容器)啟動時初始化。
  如果Servlet沒有配置<load-on-startup >1 </load-on-startup >,該Servlet不會在Tomcat啟動時初始化,而是在請求到來時初始化。

  filter

    是在系統啟動的時候通過init()初始化的,每次請求都只會調用dofiter方法進行處理,服務器停止的時候調用destroy()進行銷毀

注意:服務器關閉時,servlet和filter依次銷毀

職責

  servlet

    可以動態創建基於客戶請求的頁面;可以讀取客戶端發來的隱藏數據和顯示數據;可以和其他的服務器資源進行通訊;通過狀態代碼和響應頭向客戶端返回數據。

  filter

    主要是對請求到達servlet之前對請求和請求頭信息進行前處理,和對數據返回客戶端之前進行后處理

區別

  servlet的流程比較短,url來了之后就對其進行處理,處理完就返回數據或者轉向另一個頁面

  filter的流程比較長,在一個filter處理之后還可以轉向另一個filter進行處理,然后再交給servlet,但是servlet處理之后不能向下傳遞了。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM