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

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

在服务器上, request对象的sessioncookies属性都为NULL

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

编辑

使用session.getSession(false); session.getSession(true);返回null 显然会返回一个新的会话,另一个id。

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

  

这条线:

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

呈现为:

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

听起来你没有会话!

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

 session.getSession(true); 

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

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

  HttpSession session = request.getSession(false); 

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