introduce of servlet and filter
servlet簡介:
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
使用 Servlet,您可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。
Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網關接口)實現的程序可以達到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點優勢:
- 性能明顯更好。
- Servlet 在 Web 服務器的地址空間內執行。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。
- Servlet 是獨立于平臺的,因為它們是用 Java 編寫的。
- 服務器上的 Java 安全管理器執行了一系列限制,以保護服務器計算機上的資源。因此,Servlet 是可信的。
- Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數據庫或其他軟件進行交互。
Servlet 架構
Servlet 任務
Servlet 執行以下主要任務:
- 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。
- 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
- 處理數據并生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。
- 發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。
- 發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。
Servlet 包
Java Servlet 是運行在帶有支持 Java Servlet 規范的解釋器的 web 服務器上的 Java 類。
Servlet 可以使用?javax.servlet?和?javax.servlet.http?包創建,它是 Java 企業版的標準組成部分,Java 企業版是支持大型開發項目的 Java 類庫的擴展版本。
這些類實現 Java Servlet 和 JSP 規范。在寫本教程的時候,二者相應的版本分別是 Java Servlet 2.5 和 JSP 2.1。
Java Servlet 就像任何其他的 Java 類一樣已經被創建和編譯。在您安裝 Servlet 包并把它們添加到您的計算機上的 Classpath 類路徑中之后,您就可以通過 JDK 的 Java 編譯器或任何其他編譯器來編譯 Servlet。
Servlet 生命周期
?filter基本介紹及使用
? 簡介
? Filter也稱之為過濾器,它是Servlet技術中最實用的技術,Filter可認為是Servlet的一種"加強版",WEB開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet,?靜態圖片文件或靜態?html?文件等進行攔截,從而實現一些特殊的功能。例如Jsp, Servlet, 靜態圖片文件或靜態 html 文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能
主要用于對用戶請求進行預處理,也可以對HttpServletResponse?進行后處理。使用Filter?的完整流程:Filter?對用戶請求進行預處理,接著將請求交給Servlet?進行處理并生成響應,最后Filter?再對服務器響應進行后處理。
? 生命周期
? filter的創建和銷毀都是有服務器負責的。web服務器在啟動時,創建filter實例對象,并調用其init方法,讀取web.xml的配置,完成對象的初始化工作,為后續的用戶請求做好攔截的準備工作。開發人員通過init方法的參數可以獲取代表當前filter信息的FilterConfig對象。
? Filter有如下幾個種類:
用戶授權的Filter: Filter負責檢查用戶請求,根據請求過濾用戶非法請求
日志Filter: 詳細記錄某些特殊用戶請求
負責解碼的Filter: 包括對非標準編碼的解碼
能改變XML內容的XSLT Filter等
Filter可負責攔截多個請求或響應,一個請求或響應也可被多個Filter攔截
? 注意事項
- init,detroy方法都是執行一次。在服務器啟動時會執行init方法,初始化數據;在服務器停止前會執行detroy方法,釋放filter所占用的資源。
- 多個filter有執行順序,執行順序就是filter在web.xml中的配置順序
- 一個filter可以對應多個filter-mapping
? 使用場景
? 登錄權限,編碼設置,頁面緩存,響應數據壓縮
轉載于:https://www.cnblogs.com/sensenma533/p/10590525.html
總結
以上是生活随笔為你收集整理的introduce of servlet and filter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UPX脱壳全程分析(转)
- 下一篇: oracle expdp/impdp e