Http请求通过Session和Cookie保持会话。
Session生成时机:request对象调用getSession方法时生成,服务器会为该Session对象生成一个唯一的ID。
服务器端响应客户端请求时会在报文头中设置Set-Cookie属性,该属性内容中有一个JSESSIONID即是Session对象的标识,返回后由浏览器进行处理。
客户端再次发送请求时,浏览器会在报文头中自动追加Cookie属性,该属性将JSESSIONID传到服务器端。在服务器端用request.getSession时会取得SessionId对应的对象而不会重新生成Session。
上述内容可用各种抓包工具自行查看。
Session销毁时机:
1、到达web服务设定的Session过期时间。
2、web服务停止。
3、手动调用session对象的invalidate方法。
Session的创建和销毁可以通过HttpSessionListener来监听,该监听器配置在web.xml中。