關於jsessionid


jessionid通過這樣的方式來從客戶端傳遞到服務器端,從而來標識session。
注意一點,jsessionid跟一般的url參數傳遞方式是不同的,不是作為參數跟在"?"后面,而是緊跟在url后面用";"來分隔。
這樣在用戶禁用cookie的時候我們也可以傳遞jsessionid來使用session了,
只不過需要每次都把jseesionid作為參數跟在url后面傳遞。
那這樣豈不是很麻煩,每次請求一個url都要判斷cookie是否可用,
如果禁用了cookie,還要從url里解析出jsessionid,然后跟在處理完后轉到的url后面,以保持jsessionid的傳遞。
這些問題sun當然已經幫我們想到了。
所以提供了2個方法來使事情變得簡單:response.encodeURL()和response.encodeRedirectURL()。
這2個方法會判斷cookie是否可用,如果禁用了會解析出url中的jsessionid,並連接到指定的url后面,如果沒有找到jessionid會自動幫我們生成一個。
至於為什么要有2個方法?這2個方法有什么不同?google了一下,說是這2個方法在判斷是否要包含jsessionid的邏輯上會稍有不同。
在調用HttpServletResponse.sendRedirect前,應該先調用encodeRedirectURL()方法,否則可能會丟失Sesssion信息。
這2個方法的使用方法如:response.sendRedirect(response.encodeURL("/myapp/input.jsp"));。
如果cookie沒有禁用,我們在瀏覽器地址欄中看到的地址是這樣的:/myapp/input.jsp,如果禁用了cookie,我們會看到:/myapp/input.jsp;jsessionid=73E6B2470C91A433A6698C7681FD44F4。
所以,我們在寫web應用的時候,為了保險起見,應該在程序里的每一個跳轉url上都使用這2個方法,來保證session的可用性。


免責聲明!

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



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