簡體   English   中英

GAE,GWT和HTTP會話

[英]GAE, GWT and HTTP Session

我正在基於Google Application Engine(GAE)和Google Web Toolkit(GWT)構建Web應用程序。

客戶端(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);

將使會話永不過期。 但是, 每次在瀏覽器上刷新頁面時,都會創建一個新會話 會話已啟用。

我有兩個問題:

  • 為什么刷新會導致創建新會話? 不應該保留舊的嗎?
  • 您是否有更好的方法來跟蹤用戶對服務的不同使用的建議?

謝謝。

我不明白為什么每次都會創建一個新會話,所以您的代碼對我來說看起來不錯。 您可以嘗試在web.xml設置超時,以查看是否有區別:

<session-config>
  <session-timeout>-1</session-timeout>
</session-config>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM