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資訊。
所以,我們在寫web應用的時候,為了保險起見,應該在程式裡的每乙個跳轉url上都使用這2個方法,來保證session的可用性。
以前很少遇到這樣的問題,今天又漲見識了...
資料來自網際網路:
url中的jsessionid所引起的問題和解決
jsessionid所引起的問題 jsessionid considered harmful cookie和會話狀態的工作原理及cookie欺騙 cookie,會話狀態,cookie欺騙 jsessionid的危害及去除解決方案,原文 其實就是加個filter擷取所有url並進行重寫 然後是web....
url中jsessionid引起的乙個問題
xx系統登入之後,偶爾在使用者那會出現這個現象 登入的邏輯是這樣的 登陸主介面之後,在主介面html執行到最後的時候,使用 windows.open開啟乙個彈出視窗,去 伺服器取一些需要的 資料。但是偶爾使用者那會出現彈出視窗又定位到登陸視窗了 summer中使用filter對請求過濾,發現沒有登陸...
jsessionid 的解決方法
伺服器使用 nutch tomcat 處理加入購物車處理是,鏈結後面 加上了?jessionid 伺服器返回 404 錯誤,查詢後發現原來是 tomcat 伺服器加入cookie支援導致,解決方案 模擬coocie cookie cookie new cookie jsessionid 170015...