论坛首页 Java企业应用论坛

Tomcat session 实现

浏览 3940 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2006-09-29  
  今天思考了一下Tomcat的session的实现方式的问题,得出一点自己的结论,不知正确与否,敬请各位指教.
Tomcat是借助cookie来实现session管理的,如果客户端没有禁用cookie,就借助cookie来实现session.
当客户端禁用cookie时,浏览器还有一个会话级cookie jsessionid(被IE缓存在内存中),服务器端就使用URL重写来维持状态,其实我觉的还是在利用cookie,只不过这个cookie是缓存在内存中的.
   发表时间:2006-09-29  

理解错误!

0 请登录后投票
   发表时间:2006-09-29  
sizhefang 写道
  今天思考了一下Tomcat的session的实现方式的问题,得出一点自己的结论,不知正确与否,敬请各位指教.
Tomcat是借助cookie来实现session管理的,如果客户端没有禁用cookie,就借助cookie来实现session.
当客户端禁用cookie时,浏览器还有一个会话级cookie jsessionid(被IE缓存在内存中),服务器端就使用URL重写来维持状态,其实我觉的还是在利用cookie,只不过这个cookie是缓存在内存中的.


当浏览器禁止cookie,是不可能有会话级cookie的(被ie缓存在内存中),url重写,与cookie无关。请搜索布娃娃有关httpsession的牛贴。
0 请登录后投票
   发表时间:2006-09-29  
URL Rewriting是在所有的URL后面,加个jsessionid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

(在Tomcat里是这样,别的AppServer原理也差不多。)
0 请登录后投票
   发表时间:2006-09-29  
balaschen 写道
sizhefang 写道
  今天思考了一下Tomcat的session的实现方式的问题,得出一点自己的结论,不知正确与否,敬请各位指教.
Tomcat是借助cookie来实现session管理的,如果客户端没有禁用cookie,就借助cookie来实现session.
当客户端禁用cookie时,浏览器还有一个会话级cookie jsessionid(被IE缓存在内存中),服务器端就使用URL重写来维持状态,其实我觉的还是在利用cookie,只不过这个cookie是缓存在内存中的.


当浏览器禁止cookie,是不可能有会话级cookie的(被ie缓存在内存中),url重写,与cookie无关。请搜索布娃娃有关httpsession的牛贴。


小弟不材,还有问题请教:
1.IE里面的设置禁掉cookie是可以允许会话cookie存在的,为什么您说当浏览器禁止cookie,是不可能有会话级cookie的
2.url重写是在url后面加上sessionid的值,是不是我在一个浏览器里面点任何连接或form提交时地址栏里面的jsessionid都是相同的值,因为只有这个值相等,服务器端才能维持与客户端的会话.
0 请登录后投票
   发表时间:2006-09-30  
sizhefang 写道
1.IE里面的设置禁掉cookie是可以允许会话cookie存在的,为什么您说当浏览器禁止cookie,是不可能有会话级cookie的


用户可以设置连会话cookie都禁止掉。


sizhefang 写道
2.url重写是在url后面加上sessionid的值,是不是我在一个浏览器里面点任何连接或form提交时地址栏里面的jsessionid都是相同的值,因为只有这个值相等,服务器端才能维持与客户端的会话.


对。

对所有的连接和form action都要做点工作

<form action="<%=response.encodeURL(contextPath + "/servlet/blabal.do")%>" method="post">


<a href="<%=response.encodeURL(contextPath + "/servlet/blabla.do")%>"


Servlet Container会自动识别cookie是否禁止掉,如果禁止了就会在所有的url后面加jsessionid
0 请登录后投票
   发表时间:2006-09-30  
bigpanda 写道
sizhefang 写道
1.IE里面的设置禁掉cookie是可以允许会话cookie存在的,为什么您说当浏览器禁止cookie,是不可能有会话级cookie的


用户可以设置连会话cookie都禁止掉。



sizhefang 写道
2.url重写是在url后面加上sessionid的值,是不是我在一个浏览器里面点任何连接或form提交时地址栏里面的jsessionid都是相同的值,因为只有这个值相等,服务器端才能维持与客户端的会话.


对。

对所有的连接和form action都要做点工作

<form action="<%=response.encodeURL(contextPath + "/servlet/blabal.do")%>" method="post">


<a href="<%=response.encodeURL(contextPath + "/servlet/blabla.do")%>"


Servlet Container会自动识别cookie是否禁止掉,如果禁止了就会在所有的url后面加jsessionid


1:理解错误,我以为人兄说的是只要禁掉一般的cookie,对会话cookie不做处理,他就不起作用了.

2:明白了,非常感谢.刚搜到的一个好贴
http://www.iteye.com/topic/10452
3.如果为了防止客户端禁用cookie,不会在每个连接和form acion都要做相应的工作吧?那样我以前写的程序,都没考虑到这点.还有没有别的方式.
0 请登录后投票
   发表时间:2006-09-30  
如果我不response.encodeURL()这样写的话,只能用cookie的形式了?
0 请登录后投票
   发表时间:2006-09-30  
dogstar 写道
如果我不response.encodeURL()这样写的话,只能用cookie的形式了?



但为了防止客户端禁掉cookie,还是要做相应的处理,就是不知道还有没有别的方式.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics