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