• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      向大芳

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

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

      DOIDOI:10.11907/rjdk.161995

      中圖分類號:TP312文獻標(biāo)識碼:A文章編號文章編號:16727800(2017)001004103

      0引言

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

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

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

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

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

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

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

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

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

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

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

      public class CheckFilter implements Filter;

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

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

      4結(jié)語

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

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

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

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

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

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

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

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

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

      四川省| 琼结县| 丹棱县| 霍州市| 铁岭县| 囊谦县| 南郑县| 黑龙江省| 余姚市| 阆中市| 尚志市| 根河市| 铜鼓县| 古交市| 达日县| 宜丰县| 临安市| 格尔木市| 赤水市| 陈巴尔虎旗| 雷山县| 哈尔滨市| 武川县| 红河县| 临西县| 满城县| 永丰县| 皮山县| 宝清县| 通州市| 香格里拉县| 信丰县| 桓仁| 小金县| 麦盖提县| 安国市| 孟津县| 怀柔区| 朔州市| 朝阳区| 宁城县|