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麻豆国产视频| 一区二区欧美日韩高清免费| 国产成在线观看免费视频| 亚洲精品第一页不卡| a级毛片免费播放| 国模沟沟一区二区三区| 国产视频只有无码精品| 久久精品人人做人人爽电影蜜月 | 亚洲大尺度在线| 超碰91免费人妻| 亚洲视频三级| 亚洲愉拍一区二区精品| 国产精品无码影视久久久久久久| 无遮挡国产高潮视频免费观看| 原味小视频在线www国产| 一区二区三区在线不卡免费| 女人18毛片一级毛片在线 | 国产91视频观看| 国产一区亚洲一区| 国产欧美在线观看精品一区污| 无码综合天天久久综合网| 久久国产精品夜色| 超碰精品无码一区二区| 国产福利一区二区在线观看| 免费jizz在线播放| 亚洲午夜福利在线| 久久精品人人做人人爽| 伊人精品视频免费在线| 欧美亚洲综合免费精品高清在线观看| 91久久偷偷做嫩草影院免费看| 中国一级毛片免费观看| 91免费观看视频| 国产亚洲欧美在线专区| 99青青青精品视频在线| 精品一区二区三区四区五区| 日韩毛片免费观看| 精品第一国产综合精品Aⅴ| 欧美成人a∨视频免费观看| 欧美日韩国产在线播放| 2020精品极品国产色在线观看| 中文字幕乱妇无码AV在线| 免费一级全黄少妇性色生活片| 久久精品国产999大香线焦| 被公侵犯人妻少妇一区二区三区| 国产99欧美精品久久精品久久| 91欧美亚洲国产五月天| 在线看片中文字幕| 九九精品在线观看| 国产中文一区二区苍井空| 欧美福利在线| 久久99国产视频| 日韩欧美视频第一区在线观看 | 中文字幕无码电影| 天堂va亚洲va欧美va国产| 欧美精品伊人久久| 99国产在线视频| 国产精品自在拍首页视频8| 九月婷婷亚洲综合在线| 孕妇高潮太爽了在线观看免费| 亚洲天堂网2014| 四虎永久免费网站| 欧美成人午夜影院| 精品亚洲欧美中文字幕在线看 | 性网站在线观看| 沈阳少妇高潮在线| 欧美精品一区在线看| 亚洲欧美极品| 国产亚洲欧美在线专区| 国模沟沟一区二区三区| 国产一区二区在线视频观看| 亚亚洲乱码一二三四区| 国产成人无码Av在线播放无广告| 视频一本大道香蕉久在线播放 | 日韩福利在线视频| 久久国产亚洲欧美日韩精品| 亚洲成人一区在线| 午夜免费视频网站| 久久无码av三级| a级免费视频| 亚洲人人视频| 国产乱视频网站| 亚洲色图狠狠干|