2011-10-06 33 views
4

我很难概念化Tomcat如何在后台处理cookie和会话管理。使用Tomcat和cookies进行会话管理

Tomcat何时或在哪里发布cookie来管理HttpSession?根据This question/answer,会话从初始呼叫到getSession()创建。

如果我正在运行Filter并致电getSession(),是否会自动将必要的cookie(假设我已配置web.xml以使用cookie)附加到ServletResponse?如果不是,我该怎么做?我没有运行任何jsp的。

回答

5

Java Servlets管理cookie和状态透明地为你服务。 Tomcat是Java Servlets运行的Web服务器。

网络服务器管理cookies的方式是直接将它们发送到HTTP请求中,我并不是100%确定协议文本,但我相信只是Tomcat会发送“SET COOKIE:...”在发送到浏览器的实际HTTP中。

这里要注意的重要一点是,Tomcat和java Servlet规范是耦合的 - Tomcat托管Servlet,并提供包含HTTP通信基本方面的接口实现:例如,这里是它的Cookie接口---- http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/Cookie.html

一般来说,编写Web应用程序时,这不应该是您最关心的问题,除非您正在做某些事情。 Servlet api应该通过让你访问Session API来抽象,这个API允许你设置/获取特定于你所处理客户端的对象。

+3

Web服务器如何在“HttpRequest”中发送cookie?它不应该发送到'HttpResponse'中吗?此外,这个答案不回答我的问题,如何或何时Tomcat添加cookie。例如,如果您从Tomcat服务器请求'.html'页面,则默认情况下它不会向您发送会话cookie,但会在请求jsp时发送。 – Ryan