2012-10-27 28 views
0

我是這方面的新手。我想知道在java servlet中只調用「request.getSession(true)」是否足以啓動會話跟蹤。在cookie c中添加JsessionID怎麼辦,在將響應重定向到下一個jsp之前,設置c和response.addCookie(c)步驟的路徑。在java servlet中添加會話的正確方法

回答

1

Servlet容器將爲你做這一切。只需撥打getSession(true)並將JSESSIONID cookie添加到下一個響應中(假設響應標頭尚未發送)。實際上,servlet容器試圖從實現細節中抽象出你並提供HTTP會話抽象。

默認情況下,每個JSP文件都會創建一次訪問過的會話。當服務器不支持cookie時必須格外小心,在呈現URL時必須考慮URL重寫。

+0

這種聯繫是有益的見。如果有人能夠跟我解釋或指出我與此相關的鏈接,那將是非常好的。 在創建會話後的服務器端,cookie值名稱爲__utma和__utmz,並且某種程度上會話跟蹤不起作用。在response.addCookie(c)之後,雖然會話跟蹤開始工作,但c是('JSESSIONID',session.getId())的cookie值名稱相同。 我無法理解這一點。 – mrig

+0

@mrig:這些cookie來自Google Analytics(http://stackoverflow.com/questions/10626196),它們與servlet會話無關。再次,你應該**從不**手動設置/清除'JSESSIONID' cookie。它由容器完成。 –

+0

沒關係,所以我會與他們討論的大學服務器上發生了一些奇怪的事情。每當我從java servlet訪問jsp頁面(生成會話之後)時,會重新生成會話,如果我沒有爲JSESSIONID執行response.addCookie(c)。 這可能是tomcat6.0中的一些設置 – mrig