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ù)挖掘。

主站蜘蛛池模板: 欧美日本在线播放| 99精品国产自在现线观看| 欧美激情成人网| 青青操国产| 日韩AV无码一区| 五月婷婷精品| 在线视频亚洲欧美| 亚洲天堂网2014| 欧美一区二区啪啪| 国产亚洲欧美在线人成aaaa | 国产18在线| 国产成人成人一区二区| 成人毛片免费观看| 国产又粗又猛又爽视频| 亚洲色无码专线精品观看| 99成人在线观看| 四虎AV麻豆| 美女被躁出白浆视频播放| 91精品综合| 精品一区二区三区自慰喷水| 国产精品99在线观看| 黄色网站不卡无码| 国产精品福利在线观看无码卡| 999精品色在线观看| 特级aaaaaaaaa毛片免费视频| 国产女人在线视频| 亚洲区一区| 欧美日韩成人| 99无码中文字幕视频| 亚洲精品无码久久久久苍井空| 色偷偷男人的天堂亚洲av| 欧美午夜视频| 午夜精品久久久久久久无码软件 | 区国产精品搜索视频| 97久久人人超碰国产精品| 女人18毛片水真多国产| 国产一级裸网站| 亚洲浓毛av| 好紧好深好大乳无码中文字幕| 露脸真实国语乱在线观看| 超清无码一区二区三区| 国产精品色婷婷在线观看| 996免费视频国产在线播放| 中文毛片无遮挡播放免费| 成年免费在线观看| 92精品国产自产在线观看| 91精品网站| 国产精品国产三级国产专业不| 亚洲男女在线| 国内精品自在自线视频香蕉| 在线精品视频成人网| 强奷白丝美女在线观看| 色噜噜狠狠狠综合曰曰曰| 2020国产精品视频| 亚洲人视频在线观看| 中文字幕有乳无码| 午夜日韩久久影院| 国产一级毛片yw| 国产精品污视频| 欧洲成人免费视频| 18禁高潮出水呻吟娇喘蜜芽| 久久国产香蕉| 欧美第一页在线| 毛片基地美国正在播放亚洲| 日韩欧美国产成人| 美女无遮挡拍拍拍免费视频| 婷婷综合色| 国产区在线观看视频| 免费不卡在线观看av| 一级福利视频| 国产精品极品美女自在线看免费一区二区| 亚洲AV色香蕉一区二区| 色成人综合| 欧美国产视频| 无码福利日韩神码福利片| 亚洲不卡网| 理论片一区| 国产h视频在线观看视频| 亚洲综合激情另类专区| 乱人伦视频中文字幕在线| 午夜老司机永久免费看片| 五月天综合婷婷|