在ajax调用中通过id获取会话
有没有办法在对JAVA服务器进行的AJAX调用中访问会话。
在服务器上, request
对象的session
和cookies
属性都为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
是您的HttpServletRequest
。 false
arg表示“如果不存在则不创建会话”。 当然,如果您希望在不存在的情况下创建会话,请使用“true”。