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

        ?

        Java Web應(yīng)用中基于Filter的訪問(wèn)權(quán)限控制實(shí)現(xiàn)

        2017-03-06 23:31:53向大芳
        軟件導(dǎo)刊 2017年1期

        向大芳

        摘要摘要:簡(jiǎn)要描述了常規(guī)使用Java腳本實(shí)現(xiàn)的jsp頁(yè)面訪問(wèn)權(quán)限控制,并詳細(xì)闡述了Filter的基本原理和實(shí)現(xiàn)方式。在此基礎(chǔ)上,運(yùn)用Filter構(gòu)建訪問(wèn)權(quán)限控制方案,并將其與Java腳本方案進(jìn)行對(duì)比分析。結(jié)果表明,使用Filter對(duì)用戶請(qǐng)求進(jìn)行預(yù)處理,實(shí)現(xiàn)對(duì)jsp頁(yè)面訪問(wèn)權(quán)限進(jìn)行控制的方案,具備開發(fā)容易、效率高的優(yōu)勢(shì)。

        關(guān)鍵詞關(guān)鍵詞:Java;服務(wù)請(qǐng)求;Web應(yīng)用

        DOIDOI:10.11907/rjdk.161995

        中圖分類號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)001004103

        0引言

        實(shí)現(xiàn)對(duì)頁(yè)面訪問(wèn)權(quán)限的控制是所有Web應(yīng)用中一個(gè)無(wú)法回避的問(wèn)題,對(duì)于Java Web應(yīng)用而言,慣常的做法是使用Java腳本來(lái)實(shí)現(xiàn),但這種實(shí)現(xiàn)方式比較繁瑣,需要在每個(gè)要求控制的頁(yè)面上都添加控制腳本。該方式還有一個(gè)更致命的問(wèn)題:當(dāng)控制代碼發(fā)生改變時(shí),修改維護(hù)的工作量極大。Filter又稱過(guò)濾器,是從Servlet2.3開始增加的功能,它可以改變用戶Request請(qǐng)求和修改一個(gè)Response響應(yīng)[13]。充分利用Filter過(guò)濾器的這一特性使得程序員可以在用戶請(qǐng)求頁(yè)面資源時(shí),攔截request請(qǐng)求并進(jìn)行權(quán)限驗(yàn)證,從而拒絕非法訪問(wèn)請(qǐng)求。

        本文將分別運(yùn)用Java腳本和Filter過(guò)濾器來(lái)實(shí)現(xiàn)訪問(wèn)權(quán)限控制,并對(duì)兩種方案的優(yōu)劣進(jìn)行對(duì)比分析。1基于Java腳本方案的訪問(wèn)權(quán)限控制實(shí)現(xiàn)

        在Filter出現(xiàn)之前,在Java Web應(yīng)用中實(shí)現(xiàn)訪問(wèn)權(quán)限控制最常見的方案就是Servlet+Java腳本。其基本原理是Servlet控制器負(fù)責(zé)處理請(qǐng)求并進(jìn)行用戶合法性驗(yàn)證,Java腳本負(fù)責(zé)頁(yè)面訪問(wèn)權(quán)限控制。

        當(dāng)用戶通過(guò)瀏覽器發(fā)出登錄請(qǐng)求Request時(shí),該請(qǐng)求會(huì)被交給負(fù)責(zé)控制登錄請(qǐng)求的控制器Servlet,Servlet控制器則調(diào)用Service方法進(jìn)行響應(yīng)。該方法的原型如下:

        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

        登錄請(qǐng)求參數(shù)的傳遞有兩種方式:一種是Get方式,另一種是Post方式。根據(jù)請(qǐng)求參數(shù)傳遞方式的不同,Service方法調(diào)用不同的處理請(qǐng)求方法:doGet和doPost。其中doGet方法用于處理Get方式的請(qǐng)求,doPost方法用于處理Post方式的請(qǐng)求。通過(guò)表單Form登錄通常采用的是Post請(qǐng)求方式,因此需要在doPost方法中實(shí)現(xiàn)對(duì)用戶合法性進(jìn)行驗(yàn)證,如果驗(yàn)證通過(guò)則將驗(yàn)證通過(guò)標(biāo)識(shí)或者用戶名等標(biāo)識(shí)符以keyvalue鍵值對(duì)的形式保存在本次會(huì)話的HttpSession類型的實(shí)例化Session對(duì)象中。

        假設(shè)登錄頁(yè)面文件為login.jsp,登錄成功的目標(biāo)頁(yè)面為xx.jsp,表單Form的登錄請(qǐng)求參數(shù)被封裝為一個(gè)對(duì)象loginUser,該對(duì)象具有獲取用戶名的方法getName(),判斷用戶合法性的方法原型為:

        當(dāng)Web應(yīng)用啟動(dòng)時(shí)會(huì)去裝載Filter接口的實(shí)現(xiàn)類,Web容器首先實(shí)例化Filter實(shí)現(xiàn)類,并通過(guò)該實(shí)例對(duì)象調(diào)用其init()方法進(jìn)行初始化。初始化完成的Filter對(duì)象被Web容器保存進(jìn)應(yīng)用級(jí)的集合容器中去等待用戶訪問(wèn)資源。當(dāng)用戶訪問(wèn)的資源與web.xml配置文件中配置的Filter的url-pattern相匹配時(shí),該請(qǐng)求即被攔截,此時(shí),容器會(huì)取出Filter實(shí)例對(duì)象調(diào)用其doFilter方法。當(dāng)應(yīng)用服務(wù)被停止或重新裝載時(shí),則會(huì)執(zhí)行Filter實(shí)例化對(duì)象的destroy方法將該對(duì)象銷毀。

        如前所述,編譯完成后的Filter實(shí)現(xiàn)類字節(jié)碼文件(.class文件)并不具備對(duì)各種請(qǐng)求進(jìn)行攔截過(guò)濾處理的能力,開發(fā)人員還必須在Web應(yīng)用中對(duì)Filter進(jìn)行一系列的配置。配置Filter有兩種方式:一種是在web.xml文件中進(jìn)行配置,另外一種是在Filter實(shí)現(xiàn)類中使用Annotation注解@WebFilter方式進(jìn)行配置。

        3基于Filter方案的訪問(wèn)權(quán)限控制實(shí)現(xiàn)

        使用Filter實(shí)現(xiàn)Java Web應(yīng)用中的頁(yè)面訪問(wèn)權(quán)限控制比較容易,與Java腳本方案相同的是在處理登錄請(qǐng)求的Servlet中,將驗(yàn)證通過(guò)標(biāo)識(shí)符或者用戶名等標(biāo)識(shí)符以keyvalue鍵值對(duì)的形式保存在HttpSession實(shí)例對(duì)象中。然后編寫用于用戶訪問(wèn)權(quán)限控制的過(guò)濾器類,假定過(guò)濾器類名為CheckFilter,則該類的聲明如下:

        public class CheckFilter implements Filter;

        在該過(guò)濾器類的doFilter方法里,嘗試從HttpSession實(shí)例對(duì)象中獲取保存登錄驗(yàn)證通過(guò)標(biāo)識(shí)符的keyvalue鍵值對(duì)。如果該鍵值對(duì)存在,則說(shuō)明該用戶是通過(guò)登錄驗(yàn)證的用戶,放行請(qǐng)求,否則強(qiáng)制跳轉(zhuǎn)至登錄頁(yè)面。

        假設(shè)Session中保存登錄驗(yàn)證通過(guò)標(biāo)識(shí)符的keyvalue鍵值對(duì)的key值為user,登錄頁(yè)面為login.jsp。則實(shí)現(xiàn)訪問(wèn)權(quán)限控制的核心代碼如下:

        4結(jié)語(yǔ)

        在幾乎所有的Java Web應(yīng)用中都存在用戶訪問(wèn)權(quán)限控制的需求,實(shí)驗(yàn)結(jié)果表明,采用Java腳本方案進(jìn)行訪問(wèn)控制,即便是采用改進(jìn)型的方案,需要在大量的jsp頁(yè)面中編寫訪問(wèn)控制代碼,極其繁瑣。而采用Filter過(guò)濾器實(shí)現(xiàn)用戶訪問(wèn)控制,實(shí)現(xiàn)簡(jiǎn)便,配置完成后,即可對(duì)需要進(jìn)行訪問(wèn)控制的頁(yè)面進(jìn)行自動(dòng)過(guò)濾,無(wú)需修改任何jsp頁(yè)面的代碼,開發(fā)效率高且維護(hù)方便。在Web應(yīng)用規(guī)模和控制邏輯復(fù)雜程度增大的情況下,F(xiàn)ilter方案相比傳統(tǒng)的Java腳本方案極具優(yōu)勢(shì)。參考文獻(xiàn):

        [1]李剛.JSP/Servlet及相關(guān)技術(shù)詳解[M].北京:電子工業(yè)出版社,2013.

        [2]王鑫印.基于Filter技術(shù)的Web個(gè)性化服務(wù)應(yīng)用研究[J].微機(jī)發(fā)展,2003(12):9395.

        [3]Alur D.J2EE核心模式[M].北京:機(jī)械工業(yè)出版社,2002.

        [4]李建.Java Web開發(fā)中過(guò)濾器組件應(yīng)用及實(shí)例解析[J].電腦開發(fā)與應(yīng)用,2009(11):58.

        [5]張慶輝,李海濤.基于XML與FILTER的Web訪問(wèn)[J].電腦知識(shí)與技術(shù),2009(36):1058710589.

        [6]李博文.淺談運(yùn)用Java Web解決用戶登錄的安全問(wèn)題[J].信息科技,2011(1):195196.

        責(zé)任編輯(責(zé)任編輯:孫娟)

        第1期 吳思穎,李亞楠,王年豐,等:基于雙處理器的四旋翼飛行控制系統(tǒng)研究軟 件 導(dǎo) 刊2017年標(biāo)題

        亚洲第一无码精品久久| 女同精品一区二区久久| 久久久久88色偷偷| 精品一区二区三区免费播放| 国产在线手机视频| 五月婷婷激情六月开心 | h视频在线播放观看视频| 中文字幕乱码一区av久久不卡| 精品乱码卡1卡2卡3免费开放| 国产午夜精品久久久久九九| 国产午夜精品视频观看| 国产色系视频在线观看| 欧美黑人粗暴多交高潮水最多| 国产欧美日韩图片一区二区| 亚洲国产av高清一区二区三区| 秋霞在线视频| 亚洲av无码精品色午夜果冻不卡| 亚洲天堂av免费在线看| 中文字幕熟女激情50路| 又大又长粗又爽又黄少妇视频| a亚洲va欧美va国产综合| 国产亚洲精品hd网站| 一区二区三区在线观看视频精品| 蜜臀av在线播放一区二区三区| 久久精品亚洲乱码伦伦中文| 久久精品视频中文字幕无码| 亚洲一区二区国产一区| 国产成人无码av一区二区| 被黑人做的白浆直流在线播放| 手机在线免费av网址| 寂寞人妻渴望被中出中文字幕 | 国产内射视频在线播放| 狼人伊人影院在线观看国产| 久久99精品国产麻豆不卡| 亚洲a∨天堂男人无码| 国产av大片久久中文字幕| 在线观看人成视频免费| 色猫咪免费人成网站在线观看 | 青草蜜桃视频在线观看| 一本色道久久88加勒比综合| 亚洲午夜久久久久久久久久|