0

HttpServletResponse#encodeRedirectURL为重定向请求添加JSESSIONID(url-rewriting)。
我想知道,这只有在我们重定向到 Web 应用程序中的另一个 servlet 时才有意义,对吧?
否则,如果我们重定向到另一台服务器,我们在服务器中创建的内容如何对另一台服务器JSESSIONID有任何用途(有意义)?

4

3 回答 3

2

你是对的。会话 ID 仅对给定的 webapp 有意义。这就是为什么 javadoc 说:

对指定的 URL 进行编码以在 sendRedirect 方法中使用,或者,如果不需要编码,则返回未更改的 URL。此方法的实现包括确定是否需要在 URL 中编码会话 ID 的逻辑

(强调我的)

于 2013-02-16T12:39:59.960 回答
1

假设您有一个集群:具有相同应用程序集的多台服务器一致地部署(甚至是单个应用程序)。

如果启用了会话集群,则一个服务器设置的 JSESSIONID(无论是在 cookie 中还是在 URL 中编码)对该集群中的另一台服务器很有用,因此另一台服务器上的同一应用程序可以使用她的会话数据来回答用户的请求最初存储在第一台服务器上,甚至补充相同的会话数据。

通常最好重定向到同一台服务器,只要它启动,对于数据局部性,以限制集群中的喋喋不休。

于 2013-02-16T12:49:20.883 回答
0

在 Java EE 中,应用程序容器负责会话管理,默认情况下使用 cookie。

此链接在什么条件下创建 JSESSIONID?有关于JSESSIONID及其创建方式的详细说明。

另请参阅这篇文章http://javarevisited.blogspot.in/2012/08/what-is-jsessionid-in-j2ee-web.html

于 2013-02-16T12:35:14.323 回答