从JSP到Servlet的会话丢失(Cookie更改)



我带着同样的问题回来了,但这次有更多的文档。我有一个包含许多servlet和JSP的web应用程序。该应用程序具有登录选项。在LogInservlet中,我启动一个新的会话,在会话中放置一些信息后,我转到JSP。

LogIn.java相关代码:

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

转发后,我会得到一个名为Insert.Jsp的Jsp页面,在那里我可以获得sessions属性。

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。然后我转发到相同的Insert.jsp文件,即使我有HttpSession sess=request.getSession(false);,创建具有与第一会话不同的新会话ID的新会话。很明显out.println(sess.getAttribute("GLN"));返回null

长话短说。简称:

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

但奇怪的是。当我使用mod_jk在apache上运行应用程序时,就会发生这种情况。当我在tomcat上运行应用程序时,它运行得很好

请帮帮我,我在这个问题上已经困了两个星期了。

丹的回答:(发短信到long寻求评论,需要等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

如果请求在多个工作者之间平衡,则应将会话粘性标志设置为true。请参阅:http://tomcat.apache.org/connectors-doc/reference/workers.html了解更多详细信息。你应该试试:

worker.balancer.sticky_session=True

最新更新