亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Struts 2攔截器的研究與應用

        2019-06-20 01:22:08甘文麗
        科技視界 2019年11期
        關鍵詞:攔截器過濾器

        甘文麗

        【摘 要】介紹了Struts 2框架攔截器的設計思想和工作原理,并以軟件系統(tǒng)常見的權限控制功能為例,詳細說明了攔截器在基于Java EE 平臺的Web應用系統(tǒng)中的設計及配置。攔截器在Web開發(fā)中的應用,提高了系統(tǒng)代碼的可復用性、可擴展性及靈活性。

        【關鍵詞】攔截器;過濾器;Java EE;權限控制

        中圖分類號: TP311 文獻標識碼: A 文章編號: 2095-2457(2019)11-0031-002

        【Abstract】Introduces the design idea and working principle of the Struts 2 framework interceptor,and take the software system as an example,A detailed description of the interceptor in the design and configuration of Web application system based on Java EE platform,the application of the interceptor in Web development,improve code reusability, scalability and flexibility.

        【Key words】Interceptor;Filter;Java EE;Permission control

        0 前言

        目前,在Web應用軟件開發(fā)中,經(jīng)常要用到一些公共服務如用戶認證、權限檢查、日志管理、安全檢測、統(tǒng)計應用的訪問量、實現(xiàn)數(shù)據(jù)壓縮等,如果能將這些服務和軟件的主要業(yè)務邏輯模塊恰當?shù)亟M合在一起,將提高代碼的可復用性、可擴展性及靈活性[1-3]。AOP(Aspect-Oriented Programming)面向切面的編程利用橫切技術將與業(yè)務無關的公共模塊同邏輯模塊分離,攔截器是AOP的一種實現(xiàn)策略,以動態(tài)的“可插拔”的方式解決了上述問題。文章詳細分析了攔截器的設計思想和工作原理,并以權限控制為例,詳細說明了攔截器的設計及配置,為Web開發(fā)人員靈活運用攔截器技術提供了借鑒。

        1 攔截器

        1.1 概述

        Struts 2是一個基于MVC設計模式的開源框架,它的很多核心功能都借助于攔截器實現(xiàn),如封裝請求參數(shù)、數(shù)據(jù)校驗、類型轉換、文件上傳、防止表單的重復提交等。在實際項目開發(fā)中,利用Struts 2的內(nèi)置攔截器就可以完成很多操作,當內(nèi)置攔截器不能滿足要求時,開發(fā)人員可以自定義攔截器進行擴展。

        在訪問Struts 2控制器Action的方法之前或之后,攔截器可以進行攔截,加入某些操作,完成特定的功能[4]。攔截器同時也提供了一種可以提取Action中可重復執(zhí)行部分的方式,通過把重復的代碼提取到攔截器類中,從而實現(xiàn)更好的代碼復用性。攔截器實現(xiàn)了AOP技術,并且是可插拔的,當需要為Action添加功能的時候就配置該攔截器,當為Action減少功能的時候就取消配置攔截器,具有很好的可擴展性。

        1.2 工作原理

        Struts 2中將各個功能對應的攔截器分開定義,每個攔截器完成單個功能,如果需要對Action運用某個功能就引用對應的攔截器。在實際開發(fā)中,經(jīng)常需要在Action執(zhí)行前同時執(zhí)行多個攔截動作,如:用戶登錄檢查、登錄日志記錄以及權限檢查等,這時,可以把多個攔截器組成一個攔截器棧。所謂的攔截器棧是指對應各個功能的攔截器按照一定的順序排列形成的鏈,在使用時,可以將棧內(nèi)的多個攔截器當成一個整體來引用。當攔截器棧被附加到一個Action上時,在執(zhí)行Action之前必須先執(zhí)行攔截器棧中的每一個攔截器。通常情況下,攔截器都是以代理方式調(diào)用的。

        Struts 2攔截器在Action執(zhí)行前后進行攔截,圍繞著Action的執(zhí)行而執(zhí)行,比如實現(xiàn)日志管理攔截器和安全功能的攔截器,在系統(tǒng)的Action關聯(lián)了攔截器,添加到Action執(zhí)行過程中以后,系統(tǒng)的整個執(zhí)行流程就變?yōu)椋河涗浫罩?、?zhí)行安全檢測、執(zhí)行Action、執(zhí)行安全檢測、記錄日志,在執(zhí)行的過程中,每一個攔截器類的攔截方法決定是傳遞請求,還是終止請求。

        2 權限控制攔截器的設計與實現(xiàn)

        在實際的Web應用軟件項目中,與項目的業(yè)務邏輯相關的通用功能需要開發(fā)人員自定義攔截器實現(xiàn)。比如Web應用軟件都要涉及到權限控制這部分,當用戶訪問系統(tǒng)的受保護資源時,需要先檢查用戶是否已經(jīng)登錄,以及是否有權限訪問,可以由攔截器截獲用戶請求,判斷用戶是否已經(jīng)登錄。

        2.1 自定義攔截器

        如果需要自定義攔截器類,該類就需要實現(xiàn)Interceptor接口。這個接口提供了攔截器的生命周期方法:(1)init()方法在攔截器被創(chuàng)建后調(diào)用,對系統(tǒng)相關資源進行必要的初始化工作。(2)destroy()方法在攔截器對象被銷毀之前調(diào)用,用來釋放和攔截器相關的資源。(3)intercept(ActionInvocation invocation)方法是攔截器的核心方法,用來實現(xiàn)具體的攔截操作,可以通過ActionInvocation參數(shù)的invoke()方法,將控制權轉給下一個攔截器或者控制器Action。如果需要自定義攔截器類,只需要實現(xiàn)Interceptor接口的三個方法即可。然而在實際開發(fā)過程中,更常用的一種方式是繼承抽象攔截器類AbstractIntercepter,它實現(xiàn)了Interceptor接口,因此可以直接繼承該抽象類,簡化代碼的編寫。

        2.2 實現(xiàn)權限控制攔截器

        判斷用戶是否登錄,可以跟蹤用戶的會話對象session來完成,利用ActionContext對象就可以可訪問到session中的屬性,攔截器執(zhí)行攔截的intercepte方法的invocation參數(shù)可以得到ActionContext對象,通過ActionInvocation參數(shù)取得用戶的session實例的引用,從而判斷是否需要轉入登錄頁面。權限控制攔截器類intercepte方法的關鍵代碼如下:

        如果用戶登錄了,就把登錄時輸入的用戶名保存在session對象的username屬性中,通過ActionContext對象獲得session,然后檢查session中是否存在username屬性,這樣就可以判斷用戶登錄與否。如果用戶已經(jīng)登錄,程序就通過invocation.invoke()去執(zhí)行下一攔截器或者控制器。如果檢查到用戶未登錄,那么就會返回登錄界面的邏輯視圖。

        2.3 配置權限控制攔截器

        如果要使用權限控制攔截器,還要在項目的配置文件struts.xml中定義該攔截器。由于Struts2中很多核心功能都是由系統(tǒng)默認的defaultStack中的攔截器實現(xiàn)的,所以開發(fā)人員自定義的攔截器需要引用系統(tǒng)默認的defaultStack,這樣Web應用才可以使用Struts 2框架提供的眾多功能。接下來可以在系統(tǒng)的控制器Action中引用攔截器,控制器封裝了用戶發(fā)出的增刪改查請求的方法,用戶發(fā)出的請求都首先被攔截器棧中的攔截器攔截,檢查用戶是否登錄,以及是否有足夠的權限來執(zhí)行該操作,如果沒有登錄,則向用戶顯示登錄頁面,如果用戶已經(jīng)登錄,則把請求傳遞給控制器相應的處理請求的方法,最后給用戶返回響應。

        3 結束語

        攔截器是Struts 2的核心組成部分,它提供了一種可以提取Action中可重復執(zhí)行部分的方式,本文介紹了攔截器的設計思想和工作原理,并以軟件系統(tǒng)常見的權限控制為例,詳細說明了自定義攔截器的設計及配置, Web開發(fā)人員靈活運用攔截器技術可以顯著提高系統(tǒng)代碼的可重用性、可擴展性和靈活性。

        【參考文獻】

        [1]趙春亮,張建國,孟晨,等.基于Struts2攔截器的日志記錄的設計與實現(xiàn)[J].計算機與現(xiàn)代化,2011,2:150-153.

        [2]趙秀霞,付秀麗.基于組件和攔截器的Web系統(tǒng)權限設計與實現(xiàn)[J].現(xiàn)代電子技術,2014,8:105-107.

        [3]楊樹林,胡潔萍.使用Annotation和攔截器實現(xiàn)訪問控制[J].北京印刷學院學報,2010,2:52-54.

        [4]鄭阿奇.Java EE實用教程[M].北京:電子工業(yè)出版社,2015.102-103.作者簡介:甘文麗(1979—),女,河北邢臺人,副教授,研究方向為軟件工程、數(shù)據(jù)挖掘。

        猜你喜歡
        攔截器過濾器
        基于Fluent的過濾器內(nèi)部流場數(shù)值模擬
        多動能攔截器協(xié)同制導規(guī)律的研究及仿真
        制導與引信(2022年2期)2022-07-22 05:37:54
        英國MARSS公司推出新型反無人機攔截器
        無人機(2022年2期)2022-05-20 06:43:32
        以色列“天鎖”公司展出新式反無人機攔截器
        輕兵器(2022年5期)2022-05-19 00:56:24
        聲音過濾器
        趣味(語文)(2018年2期)2018-05-26 09:17:55
        基于LOGO!的空氣過濾器自潔控制系統(tǒng)
        自動化博覽(2014年6期)2014-02-28 22:32:20
        HVM膜過濾器管板改造總結
        中國氯堿(2014年11期)2014-02-28 01:05:07
        基于AOP理念的Struts2攔截器的研究與應用
        亚洲日韩精品无码av海量| 国产一区二区黑丝美女| 亚洲乱熟妇一区二区三区蜜桃| 99久久国产精品网站| 国产激情电影综合在线看| 免费一区在线观看| 啪啪视频免费看一区二区| 自由成熟女性性毛茸茸应用特色| 真实人与人性恔配视频| 波多野结衣aⅴ在线| 国产精品亚洲综合色区丝瓜| 人妖国产视频一区二区| 夫妇交换性三中文字幕| 日韩精品成人一区二区三区| 日本一区二区亚洲三区| 久久伊人精品中文字幕有尤物| 精品无码国产自产拍在线观看蜜 | 亚洲av无码av在线播放| 国产一区二区精品网站看黄| 久久本道久久综合伊人| 北条麻妃国产九九九精品视频 | 天天射色综合| 久草中文在线这里只有精品| 人人人妻人人澡人人爽欧美一区| 富婆如狼似虎找黑人老外| 久久成人黄色免费网站| 少妇免费av一区二区三区久久| 2021国产精品国产精华| 综合无码综合网站| 免费观看国产激情视频在线观看| 久久中文骚妇内射| 色婷婷欧美在线播放内射| 中文字幕乱码亚洲无线| 蜜桃视频国产一区二区| 久久亚洲色www成人欧美| 国产高清国内精品福利99久久 | 最新中文字幕日韩精品| 久久香蕉国产线熟妇人妻| 国产成人av综合亚洲色欲| 日本av一区二区三区四区| 亚洲av无码乱码在线观看性色|