我有一个使用我的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);
%>
有什么问题?
谢谢你, 迭。
答案 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);
%>