国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AOP思想的過濾器技術及其應用

2016-03-18 03:12黃玲
移動信息 2016年5期
關鍵詞:漁網調用過濾器

黃玲

?

基于AOP思想的過濾器技術及其應用

黃玲

重慶工程學院,重慶 400056

AOP為Aspect Oriented Programming的縮寫,意為面向切面編程。利用AOP可以對業(yè)務邏輯的各個部分進行隔離,從而使得業(yè)務各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。過濾器就應用了這種思想在客戶端提交數(shù)據(jù)進行業(yè)務邏輯出來之前對提交的數(shù)據(jù)進行預處理。過濾器在生成系統(tǒng)日志,權限管理等方面有非常廣泛的應用。

AOP;面向切面編程;攔截器

過濾器提供過濾作用,所謂過濾也就是說按照一定的規(guī)則放走一部分東西,而留下另一部分東西。形象地說,就像漁網。漁網有洞,比網洞大的魚被漁網留在網里,而比網洞小的魚則漏出漁網,從而起到了攔住大魚,放掉小魚的目的。

Java中的過濾器不能處理用戶請求,和對客戶端生成響應,它只提供過濾作用。主要用于對HttpServletRequest進行預處理,攔截Request之后,提取用戶提交的數(shù)據(jù);也可以對HttpServletResponse進行后處理,是個典型的處理鏈。一個web.xml文件中可以配置多過濾器,Web服務器按照它們在web.xml文件中的配置順序來加載這些過濾器。

Servlet過濾器中結合了許多元素,從而使得過濾器成為獨特、強大和模塊化的Web組件。也就是說,Servlet過濾器是:

聲明式的:通過Web部署中的XML標簽來聲明。這樣允許添加和刪除過濾器,而無需改動任何應用程序代碼。

動態(tài)的:過濾器在運行時由Servlet容器調用來攔截和處理請求和響應。

靈活的:它可用于對來自客戶機的直接調用執(zhí)行預處理、后期處理以及處理在防火墻之后的Web組件之間調度的請求。最后,可以將過濾器鏈接起來以提供必需的功能。

模塊化的:通過把應用程序處理邏輯封裝到單個類文件中,過濾器從而定義了可容易地從請求或響應鏈中添加或刪除的模塊化單元[1]。

可移植的:與Java平臺的其他許多方面一樣,Servlet過濾器是跨平臺和跨容器可移植的,從而進一步支持了Servler過濾器的模塊化和可重用本質。

可重用的:歸功于過濾器實現(xiàn)類的模塊化設計,以及聲明式的過濾器配置方式,過濾器可以容易地跨越不同的項目和應用程序使用。

透明的:過濾器可以根據(jù)需要添加或刪除,而不會破壞Servlet或JSP頁面。

Servlet可以用來處理用戶請求。但是在用戶具體的請求的業(yè)務功能的同時,系統(tǒng)有一些特殊的需求。比如確認該用戶是否有權限提交該請求,這就是權限管理。對于有的系統(tǒng),所有的用戶請求都必須驗證用戶是否有權限。這種驗證往往是共通,如果在每次請求中進行處理,不僅會產生大量的重復代碼,工作量大,效率低,而且質量也無法保證。這時我們就可以用到過濾器了。過濾器攔截用戶請求,判斷用戶是否有權限來訪問這個資源。有則讓他去訪問,沒有就讓他轉到另外一個頁面。這樣通過過濾器就實現(xiàn)了授權管理。當然過濾器不僅可以完成用戶驗證與權限管理,還有其他許多的用途。比如:驗證用戶提交的請求中有沒有不合法的文字、字符;統(tǒng)計Web應用的訪問量和訪問的命中率,報告;實現(xiàn)Web應用的日志處理功能;實現(xiàn)數(shù)據(jù)壓縮功能;對傳輸?shù)臄?shù)據(jù)進行加密;實現(xiàn)XML文件的XSLT轉換等等。

一個用戶請求,即一個Servlet可以有多個過濾器,以實現(xiàn)多個過濾邏輯[2]。

所有的Servlet過濾器都必須實現(xiàn)javax.servlet. Filter接口,并實現(xiàn)該接口中的三個方法:init(Filter Config filter Config)。

Servlet過濾器的初始化方法,Servlet容器創(chuàng)建Servlet過濾器實例后將調用該方法。該方法將讀取web.xml文件中Servlet過濾器的初始化參數(shù)。doFilter(ServletRequest request,ServletResponse response,F(xiàn)ilterChain chain).

該方法完成實際的過濾操作,當客戶端請求方法與過濾器設置匹配的URL時,Servlet容器將先調用過濾器的doFilter方法,F(xiàn)ilterChain用戶訪問后續(xù)過濾器。

destroy()

在Web容器卸載過濾器前被調用。該方法在Filter的生命周期中僅執(zhí)行一次,可以釋放過濾器使用的資源。

圖1 過濾的執(zhí)行流程

過濾器的執(zhí)行流程如圖所示,過濾器的處理過程是一個鏈式的過程(FilterChain),即多個過濾器組成一個鏈,依次處理,先處理第一個過濾器的doFilter()方法中的chain.doFilter()方法之前的內容,即圖中左邊大矩形中的“Code1”。之后通過chain.doFilter()方法將控制權交給下一個過濾器,執(zhí)行下一個過濾器的doFilter()方法中的chain.doFilter()方法之前的內容,即圖中中間大矩形中的“Code1”。以此類推,最后交給Servlet,執(zhí)行Servlet的service()方法。service()方法執(zhí)行完以后,控制權再交回給最后一個過濾器,執(zhí)行過濾器的doFilter()方法中的chain.doFilter()方法之后的內容,即圖中右邊大矩形中的“Code2”,之后再回到倒數(shù)第二個過濾器,執(zhí)行過濾器的doFilter()方法中的chain.doFilter()方法之后的內容。以此類推,最后返回客戶端,在畫面上顯示請求結果[3]。其中鏈式過濾過程中也可以直接給出響應,即返回客戶端,而不是向后傳遞。

[1]陳敏,唐溢鍵,周新志.用Servlet過濾器簡化中文的輸入和輸出[J].成都信息工程學院學報,2005,20(2):129-133.

[2]謝志華.深入Java Servlet網絡編程[M].西安:西安電子科技大學出版社,2004.

[3]柳永坡,劉雪梅,趙長海.JSP應用開發(fā)技術[M].北京:人民郵電出版社,2005.

黃玲(1980—),女,漢族,上海交通大學計算機及工商管理雙學士學位,具備多年的對日開發(fā)經驗,具備較強的日語、英語能力,2006年9月赴日從事軟件開發(fā)工作,從事J2EE應用項目、嵌入式系統(tǒng),手機軟件開發(fā)等。

TP311.52

A

1009-6434(2016)05-0049-01

猜你喜歡
漁網調用過濾器
爸爸的漁網
三步拆卸洋馬YH880/1180 收割機變速箱內過濾器
小魚和網
核電項目物項調用管理的應用研究
透視漁網
提高中央空調高效過濾器使用壽命的幾點思考
系統(tǒng)虛擬化環(huán)境下客戶機系統(tǒng)調用信息捕獲與分析①
污染控制—燃料電池的使能技術
新型納米材料過濾器
獨創(chuàng)的漁網