Java 使用JSP的每个servlet请求创建新会话?

Java 使用JSP的每个servlet请求创建新会话?,java,jsp,servlets,frames,httpsession,Java,Jsp,Servlets,Frames,Httpsession,我有一个运行localhost的Java 1.6遗留版本,Tomcat7应用程序使用JSP页面,框架集使用框架、javascript,但没有类似Struts的框架。我使用请求或会话从servlet传递一个对象以显示在页面中,这很好 但是,我最近做了一些更改,现在无法从会话或请求中检索到相同的对象。它以前工作得很好,所以我不确定是什么坏了,但我甚至无法将字符串值从JSP返回到servlet 我创建了一个新的精简JSP,使用请求或会话都无法从中获得任何信息。当我将代码推送到Tomcat6Web服务器

我有一个运行localhost的Java 1.6遗留版本,Tomcat7应用程序使用JSP页面,框架集使用框架、javascript,但没有类似Struts的框架。我使用请求或会话从servlet传递一个对象以显示在页面中,这很好

但是,我最近做了一些更改,现在无法从会话或请求中检索到相同的对象。它以前工作得很好,所以我不确定是什么坏了,但我甚至无法将字符串值从JSP返回到servlet

我创建了一个新的精简JSP,使用请求或会话都无法从中获得任何信息。当我将代码推送到Tomcat6Web服务器时,它也会做同样的事情。使用调试器,我可以看到在会话中填充的对象,但在以后每次创建新会话时都会丢失,如使用以下简单代码获取会话ID:

System.out.println("The session id is: " + session.getId());
会话id为:EB431C19B41957B2BB2EFC3DBF2241

会话id为:C9CBD30E84D5C93DF6114C1412AE5523 然后我在firebug的标题下看到了这一点,响应标题:

设置Cookie JSESSIONID=C9CBD30E84D5C93DF6114C1412AE5523;Path=/Name此处省略/;HttpOnly

所以我知道饼干已经做好了。我还删除了jquery,并尽可能地剥离jsp代码,但这似乎不是问题所在

我正在使用: HttpSession session=request.getSession(true);但使用false并不重要

session.setAttribute("ObjNameList", objNameList);
context.xml的cookies设置为true,我们使用response.sendRedirect,但只有在以下情况下才会引发错误:
response.sendRedirect(“error.jsp”);
在会话无效的代码中也没有位置

我在jsp中所做的一切就是使用如下方式发送表单:

document.formName.submit();
这可以正常工作。使用此代码尝试在会话中设置简单字符串也不起作用:

session.setAttribute("somevalue","someValue");
在servlet中为空:

String val = (String) session.getAttribute("somevalue");
你知道是什么导致了这一切吗

结果:


结果是url出现了问题,正如BalusC所提到的,实际上是一个输入错误,因此会话cookie的路径在jsp和servlet之间不匹配。

再次检查该servlet的请求url是否与会话cookie域和路径匹配。如果不匹配,则浏览器根本不会发送会话cookie对于请求,服务器将认为没有建立会话的方法,因此将简单地创建一个新会话

您可以在浏览器的web developer工具集的HTTP流量监视器中检查Cookie(在Chrome/Firefox23+/IE9+中按F12并打开“网络”选项卡)。当新会话启动时,服务器必须返回带有
Set Cookie
标头的响应,其中包含Cookie值和路径(隐式域)。当浏览器在同一域和路径上发送后续请求时,它必须通过
cookie
request标头将该cookie传回

另见:

会话cookie绑定到特定的域+路径。只需在webbrowser的开发人员工具集中打开HTTP流量监视器并跟踪cookie流量。我有firebug和live HTTP标头。我刚刚添加了用于监视的httpfox。这是您所想的吗?是的,检查cookie是否按照预期运行。您观察到ver已经设置了Cookie。但是客户端是否也在后续请求中返回了Cookie?请检查
Cookie
标头。如果没有,则显然在
set Cookie
标头中设置的Cookie域+路径与需要设置
Cookie
标头的请求的路径不匹配。您是否修改了sessTomcat或web.xml配置中的ion cookie路径等等?“此处省略的名称”看起来很奇怪,因为它通常只表示上下文路径。不,当请求从servlet中的jsp返回时,会话为空。我将检查cookie标头。我没有为会话cookie设置任何内容,除了在context.xml to cookies=“true”中“。此处省略的名称表示我不想放置实际的上下文路径。不,我没有修改web.xml。谢谢您花时间来帮助!