1. 程式人生 > >JAVA WEB中的Servlet過濾器

JAVA WEB中的Servlet過濾器

固定 功能 9.png tomcat 否則 登陸 項目源碼 等於 null

實現一個Servlet過濾器,可以對用戶登錄情況進行控制。要求如下:

1)訪問路徑是admin下的資源,需要登錄,如果用戶沒有登錄,自動轉向用戶登錄頁面。用戶登錄成功後,再次訪問admin下的資源不需要登錄。

2)訪問其他路徑下的資源,不需要登錄,可直接訪問。

3)必須使用Servlet過濾器實現該功能。

工具:eclipse、tomcat

過程如下:

一、制作登錄界面,其中包含用戶名以及密碼的驗證(實驗內容),另外加了一個驗證是否是因為訪問受限資源而跳轉到登陸界面(flag),只能將獲得path通過form表單的post方式發送出去,不能在Java代碼中直接將path放入request請求,這樣即使放入成功,在servlet中也獲取不到,因為下面還有form表單的提交,兩個request不在一個作用域中,因此,我將獲取的path信息放入一個input標簽中,並使之隱藏,這樣既可以成功發送,又不影響原界面的美觀。


技術分享圖片
***********************************************
技術分享圖片
********************************************

二、 制作訪問路徑過濾器

(1) 將請求轉換為http請求

(2) 判斷獲得用戶名是否為空(是否已經登陸)

(3) 獲得當前請求的訪問路徑(用於登陸後跳轉至原界面而不是一個固定的界面)

(4) 如果用戶名不為空,說明已經登陸則可以直接訪問

(5) 如果用戶名為空,說明用戶還未登陸,如果url也不為空,記錄將要訪問的url中的最後/和訪問的文件名放入request中,並且令flag等於1(說明是重定向至登錄界面,而不是直接訪問登錄界面)將所有請求重定向至登錄界面。


技術分享圖片
********************************************

三、在web.xml中配置相應屬性,用於過濾器過濾admin路徑下的所有資源


技術分享圖片
********************************************

四、配置四個界面,基本不做任何處理,放一段文字即可,然後配置統一的css屬性,改變其背景顏色,並令其居中顯示,四個文件以及css配置如下:(兩個界面放置在admin目錄下,一個another.jsp界面放在admin外面,不需要登陸即可訪問,fail.jsp是用戶登錄失敗的界面,下面僅以介紹success1.jsp為例)


技術分享圖片
********************************************
技術分享圖片


********************************************

五、編寫success1.jsp界面,在session中獲取登陸的用戶名並且展示在界面上


技術分享圖片
********************************************

六、編寫LoginServlet類,用於用戶登陸之後進行驗證等操作

(1) 將字符轉碼

(2) 獲取請求的用戶名密碼以及訪問路徑

(3) 判斷用戶名及密碼是否正確

(4) 如果正確,設置session有效值為30分鐘,把用戶名放入session中

(5) 判斷訪問路徑是否為空,以及是否為null字符串(經過index.jsp界面的轉換,可能將null轉換為String類型)

(6) 判斷訪問路徑是否為登錄界面,如果不是,就跳轉到用戶請求的界面,否則登陸成功後就跳轉到固定的admin目錄下面success1.jsp界面。

(7) 如果用戶名或密碼錯誤就跳轉到失敗界面。


技術分享圖片
****************************************

項目源碼下載地址:

點此下載

JAVA WEB中的Servlet過濾器