在ajax调用中通过id获取会话

时间:2011-04-11 09:26:49

标签: java ajax session request

是否有办法在对JAVA服务器进行的AJAX调用中访问会话。

在服务器上,request对象同时包含sessioncookies属性NULL

我可以将会话ID作为参数传递,但是如何通过ID访问会话?

修改

使用session.getSession(false);返回null,而session.getSession(true);显然会返回一个新会话,并带有另一个ID。

3 个答案:

答案 0 :(得分:3)

处理此问题的最佳方法是在网址末尾附加“; jsessionid =”。例如,在jsp中:

<script type="text/javascript">
...
    xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>"); 
...
</script>

该行:

xhr.open("GET", url + ";jsessionid=<%=pageContext.getSession().getId()%>");

呈现为:

xhr.open("GET", url + ";jsessionid=6EBA4F94838796DC6D653DCA1DD06373");

答案 1 :(得分:0)

听起来你没有会话!

确保在包含AJAX脚本的加载时,在服务器上创建会话。

session.getSession(true);

如果将其存储为cookie,那么您的AJAX调用会在触发时将其提交回服务器。

答案 2 :(得分:0)

要访问会话,您不需要会话ID。这些都是由servlet容器在幕后完成的。要获得特定请求的会话,您需要做的就是:

 HttpSession session = request.getSession(false);

其中request是您的HttpServletRequestfalse arg表示“如果不存在则不创建会话”。当然,如果您希望在不存在的情况下创建会话,请使用“true”。