0
下面的代碼我正在寫Servlet並從index.html向這個servlet發出請求。 表格index.html我將會話的密鑰和值添加到其中。Servlet:當cookie被禁用時爲每個請求創建的新會話
HttpSession session = request.getSession(false);
if(session == null){
session = request.getSession();
}
session.setAttribute(request.getParameter("key"), request.getParameter("val"));
Enumeration list = session.getAttributeNames();
while(list.hasMoreElements()){
String k = (String)list.nextElement();
String v = (String)session.getAttribute(k);
System.out.println(k +"\t\t"+v);
}
response.sendRedirect(response.encodeRedirectURL("index.html"));
上面的代碼在啓用cookie時工作正常。
明知我禁用Cookie並運行此代碼。 我期待所有的屬性和他們的價值將被添加。但我只得到最後一個。我觀察到每次創建新會話時,每次都會更改帶有JESSIONID的URL。
我在Chrome和Firefox中測試了這一點。
請幫我檢查我在哪裏犯錯
感謝
您如何看待HTTP請求與會話相關聯? HTTP是一種無狀態協議,所以如果你想保持狀態,那麼客戶端需要發回一些東西 - 無論是cookie還是別的東西,比如請求參數。 –
如果cookie被禁用,我正在使用encodeRedirectURL()方法添加會話ID。 – sjain
沒錯,但是接下來的請求會如何傳回會話ID呢?也許你需要提供更多關於整個流程的信息。 –