我正在構建基於Google應用程序引擎(GAE)和Google Web Toolkit(GWT)的Web應用程序。GAE,GWT和HTTP Session
客戶端(GWT)與以下列方式的服務器進行交互:
- 通過RPC(servlet的)的圖像的URL,從該服務器上的一個數據集選擇的詢問;
- 在瀏覽器中顯示圖像;
- 在臨時結構中存儲用戶點擊的座標;
- 當用戶要求另一個圖像時,客戶端發送到用戶點擊的服務器。
一旦服務器收到用戶點擊,它將它們存儲在數據庫中,也保存了用戶標識符。由於我不想使用任何形式的用戶身份驗證,我嘗試使用HTTP會話區分不同的用戶。
的HTTP會話與以下說明一個servlet創建:
public SessionInfo getSessionInfo() {
HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession();
if(session.isNew()) session.setMaxInactiveInterval(-1);
Integer i = (Integer) session.getAttribute("access_count");
if(i == null) {
i = new Integer(1);
} else {
i = new Integer(i.intValue()+1);
} // if
session.setAttribute("access_count", i);
SessionInfo sInfo = new SessionInfo(session.getId(), i.intValue());
return sInfo;
}
從文檔我理解的是,下面的指令:
session.setMaxInactiveInterval(-1);
將使會話永遠不會過期。但是,每次在瀏覽器上刷新頁面時都會創建新會話。會話已啓用。
我有兩個問題:
- 爲什麼刷新導致一個新的會話要創建?不應該保留舊的?
- 對於更好的方式來跟蹤用戶對服務的不同用途,您有什麼建議嗎?
謝謝。
Cookie是否在瀏覽器中啓用? –
是的。 Cookies已啓用。 –
您是否啓用會話? https://developers.google.com/appengine/docs/java/config/appconfig#Enabling_Sessions –