2012-05-22 46 views
1

我有下面的代碼用戶會話中保存的數據獲取用戶

String name=request.getParameter("user"); 
    if(name==null) 
    name=(String)request.getSession().getAttribute("name"); 
    else 
    request.getSession().setAttribute("name", name); 

如果頁面獲取與用戶作爲參數的任何要求我承擔一個JSP文件共享,它將值保存到特定的用戶會話,並且如果獲取請求沒有任何「用戶」參數,它將嘗試從會話中讀取用戶值。當我從我的本地服務器(glassfish)託管它時,代碼工作正常。 但是,當我上傳到一些遠程主機,事情變得怪異。 當我用參數'user'打開頁面時,它將該值保存在會話中。但是,如果我再次從其他瀏覽器(或清除cookie後)打開頁面,它將檢索之前保存的值,而不是返回null 我是否做錯了什麼,實際上它對於Java EE來說是非常新穎的。

回答

1

除非 不能保存以前的值1)您的會話沒有完成,同一個會話正在擴展。你能解釋你是如何清除cookie的嗎? 2)您是否在輸入網址或試圖在刪除cookies後刷新頁面。

+0

我沒有清理餅乾。我首先從chrome那裏打開頁面,比如mypage?user ='chrome'。然後,值「chrome」將被保存在會話中。接下來,我嘗試從mypage(如果沒有任何參數)從Firefox瀏覽頁面。這裏代碼request.getSession()。getAttribute(「name」)返回'chrome'。據我說,它必須返回null。 – Arshed

+0

@Arshed你確定你沒有坐在Firefox中的舊會話,你剛纔碰巧用「chrome」作爲用戶名嗎?嘗試在頁面中打印會話的「ID」以幫助查看發生了什麼。 –

+0

某些舊會話有機會,但它是如何得到新的價值的。 – Arshed

相關問題