Tomcat如何在内部处理会话?

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

  1. 隐藏的表单字段
  2. URL重写
  3. cookies

我很好奇Apache Tomcat如何在内部处理会话,尽管它与普通开发人员无关。

Tomcat是否也使用cookie或其他?

默认情况下,Tomcat直接在HTTP响应中发送cookie,如SET COOKIE:JSESSIONID....返回浏览器并重写URL以在其中添加JSESSIONID参数,以便第一个请求,以便它可以回退到稍后在客户端浏览器中禁用cookie

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

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

   

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

   

甚至用cookie读取这个Servlet会话跟踪(JSESSIONID)

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