2013-03-22 57 views
1

我有使用JSP的Spring應用程序。我需要重定向一頁,但只有一次。這是由於春季安全 - 一旦用戶訪問此頁面,我需要調用重定向來註銷他,但要保持在同一頁面上。有什麼辦法,只能通過java,html或js來做到這一點?或者我可能會問錯 - 必須有某種方式,如何做到這一點,但我並不十分注重前端技術,所以我很高興,如果有人可以發佈一些代碼來展示我,如何做到這一點工作..謝謝:)只重定向HTML頁面一次

因此,用戶:用戶類型mywebsite.com/login->我需要調用重定向登錄他的情況下,他已經登錄 - >相同的網站應出現,但現在沒有重定向。

PS:我無法將用戶重定向到另一個網站 - 它必須是同一部位用相同的源代碼。

+0

您正在尋找'session.invalidate();'在您的控制器請求處理程序中的Java服務器端。完成後,請勿重定向到其他頁面。如果你發佈[你有什麼嘗試](http://mattgemmell.com/2008/12/08/what-have-you-tried/)以獲得更好的幫助,那會更好。 – 2013-03-22 05:32:24

+0

相關:[會話驗證過濾器在會話過期時將用戶註銷](http://stackoverflow.com/q/7370885/1065197),檢查接受的答案(接近底部)的第二部分。 – 2013-03-22 05:43:47

回答

0

如果我理解您的使用情況下,我寧願註銷用戶的登陸行動的一部分(即分解出記錄了過程,無論從註銷操作從登錄行動稱呼它,以及)。

如果這樣做是不可行的(我不能解釋爲什麼它不會),我會專注於「重定向如果他登錄」部分而不是「只重定向一次」部分 - 前者是如果您使用某種會話來跟蹤登錄狀態,則幾乎不需要對代碼進行任何修改即可輕鬆檢查。

聲明:我知道旁邊沒有關於Sprint公司,這些都是應該在任何經典web應用程序的工作非常一般性意見。

-1

您可以使用過濾器。

@Override 
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { 
      HttpServletRequest test1= (HttpServletRequest) arg0; 

     test1.getRequestURL()); it gives http://localhost:8081/applicationName/menu/index.action 
     test1.getRequestURI()); it gives applicationName/menu/index.action 
     String pathname = test1.getServletPath()); it gives //menu/index.action 


     if(pathname.equals("//menu/index.action")){ 
      arg2.doFilter(arg0, arg1); // call to urs servlet or frameowrk managed controller method 


      // in resposne 
      HttpServletResponse httpResp = (HttpServletResponse) arg1; 
      RequestDispatcher rd = arg0.getRequestDispatcher("another.jsp"); redirect to another page at response time 
      rd.forward(arg0, arg1); 





    } 

DONOT忘記把<dispatcher>FORWARD</dispatcher>在過濾器映射在web.xml中 如果你不想使用過濾器,你可以重定向到從URS控制方法另一個JSP。

+0

「過濾器」不適合做這項工作(或任何類似的組件)。 – 2013-03-22 05:36:13

+0

如果你不想使用過濾器,你可以從urs控制器方法重定向到另一個jsp。 – 2013-03-22 05:41:21

+0

參考[這個偉大的答案和解釋](http://stackoverflow.com/a/7371899/1065197)瞭解你的方法是錯誤的。 – 2013-03-22 05:42:53