encodeURL() vs encodeRedirectURL()


        當用URL重寫方式來管理Session的時候,通過以上兩個方法把session ID寫到URL中。不同點是:兩個方法確定是否需要包含session ID的邏輯不同。在調用HttpServletResponse.sendRedirect前,應該先調用encodeRedirectURL()方法,否則可能會丟失Sesssion信息。

        下面來自於參看J2EE幫助文檔。

  • java.lang.String encodeRedirectURL(java.lang.String url),對sendRedirect方法使用的指定URL進行編碼。如果不需要編碼,就直接返回這個URL。 之所以提供這個附加的編碼方法,是因為在redirect的情況下,決定是否對URL進行編碼 的規則和一般情況有所不同。所給的URL必須是一個絕對URL。相對URL不能被接收,會拋 出一個IllegalArgumentException。所有提供給sendRedirect方法的URL都應通過 這個方法運行,這樣才能確保會話跟蹤能夠在所有瀏覽器中正常運行。
  • java.lang.String encodeURL(java.lang.String url),對包含session ID的URL進行編碼。如果不需要編碼,就直接返回這個URL。Servlet引 擎必須提供URL編碼方法,因為在有些情況下,我們將不得不重寫URL,例如,在響應對應的 請求中包含一個有效的session,但是這個session不能被非URL的(例如cookie)的手 段來維持。所有提供給Servlet的URL都應通過這個方法運行,這樣才能確保會話跟蹤能夠 在所有瀏覽器中正常運行。

        實際上看完之后還是不怎么理解,等等學完會話控制再探討。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM