當用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都應通過這個方法運行,這樣才能確保會話跟蹤能夠 在所有瀏覽器中正常運行。
實際上看完之后還是不怎么理解,等等學完會話控制再探討。。。。