Tomcat如何在内部处理会话?

时间:2013-07-24 12:32:03

标签: java session tomcat

根据我的理解,Servlet Containers使用一些HTTP协议来处理会话,例如

  1. 隐藏表单字段
  2. 网址重写
  3. 缓存
  4. 我很好奇 Apache Tomcat 如何在内部处理会话,尽管它与普通开发人员无关。

    Tomcat也使用cookies或其他吗?

2 个答案:

答案 0 :(得分:13)

默认情况下,Tomcat直接将HTTP响应中的cookie(如SET COOKIE:JSESSIONID....)发送回浏览器,并重写URL以在第一个请求中添加JSESSIONID参数,以便它可以如果在客户端浏览器中禁用了 cookies ,则可以使用后者。

下次如果浏览器在其JSESSIONID中请求request的服务器,Tomcat将使用JSESSIONID cookie来维护会话。

您可以通过修改 context.xml 来覆盖Tomcat中的会话cookie行为:

<Context cookies="false">
</Context>

并以相同的方式禁用网址重写:

<Context disableURLRewriting="true">
</Context>

即使阅读此Servlet Session Tracking with cookies (JSESSIONID)

答案 1 :(得分:0)

Tomcat默认发送cookie,除非用户从浏览器中阻止它们(尽管不鼓励这种做法)。此外,创建的会话cookie(JSESSIONID)不是持久性cookie,只要浏览器的实例(窗口)关闭,它们就会消失。