2014-06-10 26 views
0

我有一個JSP應用程序什麼使用我的GAE應用程序。這個JSP應用程序是我的移動界面。Memcache /會話與GAE和JSP

我想在memcache(會話)中存儲一些值。我的意思是,當我打開一個JSP文件時,我打電話給我的GAE應用程序,並存儲這個值。

我不知道如何存檔它。

我已經創建了這個方法(在我的GAE應用程序中)從我的JSP文件中調用了什麼,但是我在this.getThreadLocalRequest()上得到了一個空值。

public void setTimezoneSession(String timezone){ 
    HttpServletRequest request = this.getThreadLocalRequest(); 

    HttpSession session = request.getSession(true); 
    // Here is where I try to set timezone in memcache (session) 
    session.setAttribute("timezone", timezone); 
} 

在我的JSP文件,我已經叫AJAX:

$.ajax({ 
    type: "post", 
    url: "TimeZone.jsp", 
    data: "tz_cliente=" + "Europe/Madrid", 
    cache: false, 
    success: function (msg) {} 
}); 

TimeZone.jsp是這樣的文件:

<% 
// Here I get "Europe/Madrid" from AJAX. 
String tz = (String)request.getParameter("timezone_from_ajax"); 
userService.setTimezoneSession(tz); 
%> 

有什麼不對?

謝謝, 迭戈。

回答

0

您需要爲App Engine應用啓用會話 - 默認情況下它們處於禁用狀態。在您的appengine.xml文件中加入:

<sessions-enabled>true</sessions-enabled> 
    <async-session-persistence enabled="true" /> 

此外,您還可以在會話直接在你的JSP添加此對象,而AJAX調用(如果你有在渲染頁面已經提供此數據):

<%@ page session="true" %> 
.... 
<% 
    HttpSession currentSession = request.getSession(true); 
    currentSession.setAttribute("timezone", timezone); 
%> 
+0

我會試試你的解決方案。如果我想使用它,如何在我的服務器中獲得這些數據(時區)? –

+0

這取決於你從哪裏得到這些數據。如果您將其作爲用戶首選項存儲在數據存儲區中,則可以直接在jsp頁面中從數據存儲區讀取它。如果你問一個用戶,你需要在用戶做出選擇後調用一個servlet(順便說一句,它不一定是jsp)。 –

+0

恩,謝謝。那是我會做的。我會在會話中存儲時區,我可以將其用於一些操作。 –