session - tomcat如何保持 session

标签 session tomcat

以下是我目前知道的 tomcat 保持 session 的两种方式。

  1. 在URL中添加参数如“JSESSIONID=xxxxxxxxxxxxxxx”,每次请求发送到服务器端时,tomcat将查询带有“xxxxx”的session-map
  2. 在 cookie 中添加一个字段,例如“JSESSIONID=xxxxxxxxxxxxxxx”。

因此,据我了解,如果我们在浏览器中禁用 Cookie,并使用不带参数的 URL 访问我们的页面,例如“JSESSIONID=xxxxxxxxxxxxxxx”。 session ID 将被更改。 用jsp写一段代码

<%  
    out.println(request.getSession().getId());  
%>

每当我们访问这个jsp时,session id都会改变。但事实是 sessionId 永远不会改变。

我观察了浏览器中的cookies,我确实禁用了cookie。 当我第一次访问该页面时,请求和响应如下:

    Request URL:http://localhost:8080/examples/testt.jsp
    Request Method:GET
    Status Code:200 OK
    ----------
    Request Headersview source
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:zh-CN,zh;q=0.8
    Cache-Control:max-age=0
    Connection:keep-alive
    Host:localhost:8080
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19

    -------
    Response Headersview source
    Content-Length:342
    Content-Type:text/html;charset=ISO-8859-1
    Date:Sat, 05 May 2012 03:01:32 GMT
    Server:Apache-Coyote/1.1
    Set-Cookie:JSESSIONID=6C71760FD3B85C4696CD8E6204574A06; Path=/examples

当我第二次访问该页面时,请求和响应如下:

Request URL:http://localhost:8080/examples/testt.jsp
Request Method:GET
Status Code:200 OK
--------
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:JSESSIONID=6C71760FD3B85C4696CD8E6204574A06
Host:localhost:8080
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
--------
Response Headersview source
Content-Length:342
Content-Type:text/html;charset=ISO-8859-1
Date:Sat, 05 May 2012 03:03:19 GMT
Server:Apache-Coyote/1.1

有人能告诉我 tomcat 如何在禁用 cookie 且 URL 不包含“JSESSIONID=xxxxxxxxxxxxxxx”时保持 session 。

非常感谢。


我在 Chrome 中禁用 cookie 时犯了一个错误,我在上面的测试中并没有真正禁用 cookie。

最佳答案

您没有禁用 cookie。浏览器在请求 header 中发送 cookie。

关于session - tomcat如何保持 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458481/

相关文章:

java - 为什么 session 不为空

AngularJS 服务器 session 和与 NodeJS 后端服务器的身份验证

java - 你如何在 apache camel 中对 servlet 端点进行单元测试?

java - tomcat 8.0.15/jasper/tiles 3.0.5 的 NoClassDefFoundError

ruby-on-rails - Rails - 如何跨子域删除重复的 cookie?

php - 通过重新加载第一页然后再次滚动回来使浏览器返回

java - TomcatEmbeddedServletContainer - 需要身份验证对话框

使用 Intellij 设置 Tomcat 服务器

java - SessionListener 中的 Shiro HttpSession?

java - 爆炸 WAR 文件的优点/缺点