使用GAE和JSP进行Memcache / Session

时间:2014-06-10 10:52:24

标签: java jsp google-app-engine session

我有一个使用我的GAE应用程序的JSP应用程序。这个JSP应用程序是我的移动界面。

我想在memcache(session)中存储一些值。我的意思是,当我打开一个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);
%>

有什么问题?

谢谢你, 迭。

1 个答案:

答案 0 :(得分: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);
 %>