2013-08-30 17 views
3

我遇到了我的驗證過濾器有問題。當過濾器重定向到登錄頁面時,所有先前的頁面(主頁面)將顯示在登錄頁面中。 如果我手動進入登錄頁面,它工作正常。Servlet過濾器重定向,網址未更改

這裏是我的過濾器:

我也注意到,當過濾器重定向到登錄頁面的瀏覽器欄中的網址保持不變。主要問題是我從登錄頁面的其他頁面獲取內容。 不知道問題出在哪裏。

+0

如果您已經有訪問一個頁面,然後'getSession'總是會返回一個「沒有新的會話」,這將導致你的'if'聲明的首例。 – LaurentG

+0

我認爲if語句正常工作,因爲它重定向正確,唯一的問題是URL不會更改爲「/ login」。 –

+0

好的,在這個過濾器之前還有其他的servlet過濾器嗎?沒有過濾器應該寫在響應,否則'sendRedirect'不能工作。 – LaurentG

回答

0

您傳遞的loginURL的值是多少?發送相對路徑。

+0

的值是正確的,它是「/ Web應用程序/登錄「 –

+0

[http://stackoverflow.com/questions/2190733/java-servlet-filter-redirect-problem?rq=1](http://stackoverflow.com/questions/2190733/java-servlet-filter-redirect-問題?rq = 1)我發現我應該直接重定向到登錄頁面。 –

+0

重定向到/login.jsp –

2

改變瀏覽器的網址並沒有依賴於過濾器,但它取決於你如何調用頁/ servlet的。你可以叫你的servlet/JSP有兩種方式

  1. RequestDispatcher:傳輸相同的請求下,控制其他(同一URL)

  2. Send Redirect:啓動一個新的請求(新的URL)

    注意:所有的過濾器將做的是驗證的請求

-1

我有完全相同的問題。 真正的問題是,我和你都忘了添加以下行:

response.setContentType("text/html"); 

加入這一行我重定向工作正常後。在此之前,我的servlet將保留在具有空白頁面的 相同頁面上(因爲沒有任何內容寫入響應oputput流)。

希望這可以幫助別人誰是有這個問題。在測試這種可能性之前,我花了一些痛苦的時間。