部署Servlet過(guò)濾器
事實(shí)上,與 Web 應用程序一起部署過(guò)濾器絕對不涉及任何復雜性。只需把過(guò)濾器類(lèi)和其他 Web 組件類(lèi)包括在一起,并像您通常所做的那樣把 web.xml 文件(連同過(guò)濾器定義和過(guò)濾器映射聲明)放進(jìn) Web 應用程序結構中,Servlet 容器將處理之后的其他所有事情。
過(guò)濾器的許多應用
您在 J2EE Web 應用程序中利用過(guò)濾器的能力,僅受到您自己的創(chuàng )造性和應用程序設計本領(lǐng)的限制。在適合使用裝飾過(guò)濾器模式或者攔截器模式的任何地方,您都可以使用過(guò)濾器。過(guò)濾器的一些最普遍的應用如下:
加載:對于到達系統的所有請求,過(guò)濾器收集諸如瀏覽器類(lèi)型、一天中的時(shí)間、轉發(fā) URL 等相關(guān)信息,并對它們進(jìn)行日志記錄。
性能:過(guò)濾器在內容通過(guò)線(xiàn)路傳來(lái)并在到達 Servlet和JSP頁(yè)面之前解壓縮該內容,然后再取得響應內容,并在將響應內容發(fā)送到客戶(hù)機機器之前將它轉換為壓縮格式。
安全:過(guò)濾器處理身份驗證令牌的管理,并適當地限制安全資源的訪(fǎng)問(wèn),提示用戶(hù)進(jìn)行身份驗證和/或將他們指引到第三方進(jìn)行身份驗證。過(guò)濾器甚至能夠管理訪(fǎng)問(wèn)控制列表(Access Control List,ACL),以便除了身份驗證之外還提供授權機制。將安全邏輯放在過(guò)濾器中,而不是放在 Servlet和JSP頁(yè)面中,這樣提供了巨大的靈活性。在開(kāi)發(fā)期間,過(guò)濾器可以關(guān)閉(在 web.xml 文件中注釋掉)。在生產(chǎn)應用中,過(guò)濾器又可以再次啟用。此外還可以添加多個(gè)過(guò)濾器,以便根據需要提高安全、加密和不可拒絕的服務(wù)的等級。
會(huì )話(huà)處理:將 Servlet和JSP頁(yè)面與會(huì )話(huà)處理代碼混雜在一起可能會(huì )帶來(lái)相當大的麻煩。使用過(guò)濾器來(lái)管理會(huì )話(huà)可以讓 Web 頁(yè)面集中精力考慮內容顯示和委托處理,而不必擔心會(huì )話(huà)管理的細節。
XSLT 轉換:不管是使用移動(dòng)客戶(hù)端還是使用基于 XML 的 Web 服務(wù),無(wú)需把邏輯嵌入應用程序就在 XML 語(yǔ)法之間執行轉換的能力都絕對是無(wú)價(jià)的。
使過(guò)濾器適應 MVC 體系結構
模型-視圖-控制器(Model-View-Controller,MVC)體系結構是一個(gè)有效的設計,它現在已作為最重要的設計方法學(xué),整合到了諸如 Jakarta Struts 和 Turbine 等大多數流行的 Web 應用框架中。過(guò)濾器旨在擴充 MVC 體系結構的請求/響應處理流。不管請求/響應發(fā)生在客戶(hù)機和服務(wù)器之間,還是發(fā)生在服務(wù)器上的其他組件之間,過(guò)濾器在處理流中的應用都是相同的。從 MVC 的觀(guān)點(diǎn)看,調度器組件(它或者包括在控制器組件中,或者配合控制器組件工作)把請求轉發(fā)給適當的應用程序組件以進(jìn)行處理。這使得控制器層成為包括 Servlet 過(guò)濾器的最佳位置。通過(guò)把過(guò)濾器放在控制器組件本身的前面,過(guò)濾器可以應用于所有請求,或者通過(guò)將它放在控制器/調度器與模型和控制器之間,它可以應用于單獨的 Web 組件。
MVC 體系結構廣為傳播,并具有良好的文檔。請通過(guò) 參考資料 中的鏈接了解關(guān)于 MVC 和 MVC 體系結構中的 Servlet 實(shí)現的更多信息。
聯(lián)系客服