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

发布于 2024-10-31 19:42:17 字数 335 浏览 0 评论 0原文

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

在服务器上,request 对象同时具有 sessioncookies 属性 NULL

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

编辑

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

Is there a way to have access to session in a AJAX call made to a JAVA server.

On the server, the request object has both the session and cookies properties NULL.

I can pass though the session id as a parameter, but how can I access the session by ID?

Edit

Using session.getSession(false); returns null, while session.getSession(true); obviously returns a new session, with another id.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你的呼吸 2024-11-07 19:42:17

处理此问题的最佳方法是在 url 末尾附加“;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");

The best way to deal with this is to append ";jsessionid=" at the end of the url. For instance, in a jsp:

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

The line:

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

is rendered as:

xhr.open("GET", url + ";jsessionid=6EBA4F94838796DC6D653DCA1DD06373");
蓝颜夕 2024-11-07 19:42:17

看来您没有参加会议!

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

session.getSession(true);

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

It sounds like you don't have a session!

Make sure when the load containing the AJAX script, the session is created on the server.

session.getSession(true);

If this is stored as a cookie, then your AJAX call will submit it back to the server when it fires.

原谅过去的我 2024-11-07 19:42:17

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

 HttpSession session = request.getSession(false);

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

In order to access the session you do not need the session id. This is all done for you behind the scenes by your servlet container. To get the session for a particluar request all you need to do is:

 HttpSession session = request.getSession(false);

where request is your HttpServletRequest. The false arg means "do not create session if it does not exist". Of course use "true" if you want the session to be created if it doesn't exist.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文