gpt4 book ai didi

java - 从 JSP 到 Servlet 的 session 丢失(Cookie 更改)

转载 作者:行者123 更新时间:2023-11-30 11:40:21 26 4
gpt4 key购买 nike

我带着同样的问题回来,但这次有更多的记录。我有一个包含许多 servlet 和 JSP 的 Web 应用程序。该应用程序有一个登录选项。在 LogIn servlet 中,我开始一个新 session ,在 session 中放置一些信息后,我转到 JSP。

LogIn.java相关代码:

HttpSession sess = request.getSession(true);
sess.setAttribute("GLN", user);
rd.forward(request, response);

转发后,我得到一个名为 Insert.jsp 的 Jsp 页面,我从中获取 session 属性。

Insert.jsp相关代码:

HttpSession sess = request.getSession(false);
if (sess != null){
out.println(sess.getAttribute("GLN"));
}

在此之后,我有一个将我定向到 servlet Adaugare.java 的表单。我在这里做同样的事情:

Adaugare.java代码:

HttpSession sess = request.getSession(false);

问题来了。 稍后编辑:这将返回 null,因为不存在 session 。然后我转发到同一个 Insert.jsp 文件,即使我有 HttpSession sess = request.getSession(false);,也会创建一个与第一个 session 不同的具有新 session ID 的新 session 。很明显out.println(sess.getAttribute("GLN"));返回 null。

说来话长。简短版本:

当我从 servlet 转到 jsp 时, session 正常,当我从 jsp 转到 servlet 时,找不到 session 。然后当我转发到 JSP 时创建一个新 session 。实际上它创建了一个新的 cookie。如果我从 JSP 和 serlet 打印 contextPath,它是一样的。

但奇怪的是。当我使用 mod_jk 在 apache 上运行应用程序时会发生这种情况。当我从 tomcat 运行该应用程序时,它运行正常......

请帮忙,我在这个问题上被困了 2 周。

对dan的回答:(文字太长征求意见,需要等7个小时才能回复我自己的问题)我删除了所有注释行。希望没关系。我不是负责服务器的人,但有人告诉我这不是多个工作人员。

worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true

worker.list=jk-manager
worker.jk-manager.type=status

worker.list=balancer
worker.balancer.type=lb

worker.balancer.error_escalation_time=0

worker.balancer.max_reply_timeouts=10

worker.balancer.balance_workers=node1
worker.node1.reference=worker.template
worker.node1.host=localhost
worker.node1.port=8109

worker.node1.activation=A

worker.balancer.balance_workers=node2
worker.node2.reference=worker.template
worker.node2.host=localhost
worker.node2.port=8209

worker.node2.activation=A

worker.template.type=ajp13

worker.template.socket_connect_timeout=5000

worker.template.socket_keepalive=true

worker.template.ping_mode=A

worker.template.ping_timeout=10000

worker.template.connection_pool_minsize=0

worker.template.connection_pool_timeout=600

worker.template.reply_timeout=300000

worker.template.recovery_options=3

最佳答案

如果多个工作人员之间的请求是平衡的,您应该将 session 粘性标志设置为 true。请参阅:http://tomcat.apache.org/connectors-doc/reference/workers.html更多细节。你应该尝试:

worker.balancer.sticky_session=True

关于java - 从 JSP 到 Servlet 的 session 丢失(Cookie 更改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12780542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com