是否有办法在对JAVA服务器进行的AJAX调用中访问会话。
在服务器上,request
对象同时包含session
和cookies
属性NULL
。
我可以将会话ID作为参数传递,但是如何通过ID访问会话?
修改
使用session.getSession(false);
返回null
,而session.getSession(true);
显然会返回一个新会话,并带有另一个ID。
答案 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
是您的HttpServletRequest
。 false
arg表示“如果不存在则不创建会话”。当然,如果您希望在不存在的情况下创建会话,请使用“true”。