注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

Tomat怎么实现session  

2014-09-03 16:33:31|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Tomat怎么实现session

By gylifei at 2014-07-21 27 阅读 0 回复 0.0 希赛币

请点击下面回答中的"采纳为答案"按钮,选择贡献(希赛币)比率后,点击"确认结算"按钮。

合计0人
0%

Tomat如何实现session
Servet Spec 规定了三种session tracking机制:
? 1.cookie (cookie name 必须是JSESSIONID)
? 2.url rewrite (即给URL加上,";jessionid=EDFGHGFRTYTYUI56789", e.g.)
? 3.如果当前处于SSL中,则servlet容器可以直接利用SSL中内置的会话跟踪机制实现自己的session
据不完全代码跟读,tomcat5.5并没有采用第3种方案(我也无法确证),所以这里只讨论前两种:

机制1: cookie
a. 创建session时 => 服务端创建cookie,并通过http-response发到客户端

//ornnector.Request. doGetSession() ... //先创建session对象 // Creating a new session cookie based on that session if ((session != null) && (getContext() != null) && getContext().getCookies()) { Cookie cookie = new Cookie(Globals.SESSION_COOKIE_NAME, session.getIdInternal()); //注意:cookie的domain未设置 configureSessionCookie(cookie); //这里会把cookie-path设成context-path,and make it secure if HTTPS is enabled response.addCookie(cookie); }

? b.客户端发回的cookie是怎么变成session的?

//ornnector.CoyoteAdapter.parseSessionCookiesId() //request被构建时会parse出session-id request.setRequestedSessionId(scookie.getValue().toString()); //ornnector.Request. doGetSession() //request拿session时再根据session-id取到session对象 session = manager.findSession(requestedSessionId);

机制2: url rewrite方案
? a. 把;jsessionid加到URL中
????? 只有当发生redirect时,tomcat才会自动把jsessionid加上去;你自己在JSP写的链接时,必须自己把jessionid加上去,比如用(<c:url>这个jstl标签)
? b. Tomcat怎么根据;jessionid找到对应的session对象?

//ornnector.CoyoteAdapter.parseSessionId() ... ByteChunk uriBC = req.requestURI().getByteChunk(); // ";jsessionid"是request-uri的一部分,不是query int semicolon = uriBC.indexOf(match, 0, match.length(), 0); // match 就是";jsessionid"

  评论这张
 
阅读(134)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017