999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Struts 2攔截器的研究與應(yīng)用

2019-06-20 01:22:08甘文麗
科技視界 2019年11期

甘文麗

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

【關(guān)鍵詞】攔截器;過濾器;Java EE;權(quán)限控制

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

1 攔截器

1.1 概述

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

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

1.2 工作原理

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

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

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

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

2.1 自定義攔截器

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

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

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

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

2.3 配置權(quán)限控制攔截器

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

3 結(jié)束語

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

【參考文獻】

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

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

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

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

主站蜘蛛池模板: 国产自在线播放| 欧美日韩在线第一页| 午夜人性色福利无码视频在线观看| 亚洲欧美不卡| 美女亚洲一区| 成人精品视频一区二区在线| 国产欧美视频综合二区| 操国产美女| 91人妻日韩人妻无码专区精品| 热久久综合这里只有精品电影| 国产精品免费福利久久播放| 99视频只有精品| 992tv国产人成在线观看| 国产成人区在线观看视频| 久久国产亚洲欧美日韩精品| 手机在线看片不卡中文字幕| 美女被躁出白浆视频播放| 97se亚洲综合在线天天| 在线日韩日本国产亚洲| 色综合激情网| a国产精品| 国产主播一区二区三区| 黄色不卡视频| 精品视频一区在线观看| 视频在线观看一区二区| 91色综合综合热五月激情| a级毛片网| 都市激情亚洲综合久久| 99视频免费观看| 亚洲综合激情另类专区| 亚洲 欧美 中文 AⅤ在线视频| 国产在线观看人成激情视频| 亚洲永久色| 日韩av电影一区二区三区四区| 国产综合另类小说色区色噜噜 | 91色老久久精品偷偷蜜臀| 在线视频精品一区| 内射人妻无码色AV天堂| 国产内射一区亚洲| 亚洲黄网视频| 97国产精品视频人人做人人爱| 亚洲成人在线免费观看| 精品视频一区二区观看| 国产亚洲现在一区二区中文| 尤物在线观看乱码| 18禁黄无遮挡免费动漫网站| 久久人与动人物A级毛片| 色135综合网| 性欧美在线| 狠狠色综合网| 波多野结衣爽到高潮漏水大喷| 久久精品日日躁夜夜躁欧美| 91精品情国产情侣高潮对白蜜| 香蕉国产精品视频| 亚洲人成网站色7799在线播放 | 国产美女自慰在线观看| 亚洲丝袜第一页| 露脸一二三区国语对白| 国产成人无码久久久久毛片| 国产丝袜一区二区三区视频免下载| 欧美中出一区二区| 亚洲午夜福利精品无码| 国产精品毛片一区视频播| 亚洲国产日韩视频观看| 国产va欧美va在线观看| 国产91透明丝袜美腿在线| 2020国产在线视精品在| 99国产精品免费观看视频| 麻豆精品在线视频| 高清免费毛片| 欧美精品亚洲精品日韩专| 亚洲最猛黑人xxxx黑人猛交| 成色7777精品在线| 欧美性精品| 国产精品亚欧美一区二区| 2021精品国产自在现线看| 无码国产偷倩在线播放老年人| 亚洲一区二区三区国产精华液| 欧美成人精品在线| 欧美日韩国产高清一区二区三区| 国产精品大白天新婚身材| 亚洲av无码久久无遮挡|