Session的原理

来源:互联网 发布:java big5编码 编辑:程序博客网 时间:2024/05/01 08:27

Session的原理

       在各种动态Web开发中一般都会用到Session来弥补http无状态的缺陷(其实谈不上缺陷,不过对于要开发保持状态的应用程序来说无疑这个是带来了一些不方便)。而Session的使用一般都很简单,无非是setAttribute, getAttribute之类。但是Web服务器又是如何实现Session的呢?

要想让服务器端识别出客户端,那么客户端必须有一个凭证(可能是一个GUID),每个凭证在服务器端对应一个Session对象,而这个Session对象就保存各种用户相关的信息。这也就是为什么session.getAttribute都会取到特定用户的信息。现在关键就是这个凭证怎么生成和管理。

1Cookie:客户端和服务器第一次打交道的时,服务器给客户端发一个cookie,里面可能就包含一个GUID,同时服务器端生成一个与该GUID对应的Session。下次客户再次访问服务器的时候,服务器首先获取先前的cookie中的GUID,然后根据该GUID获取相应的Session。这样通过用户对应的Session获得相应的信息。

2URL重写(URL Rewriting):出于安全考虑客户端可以拒绝接受Cookie,这样第一种方法就失效了。因此基本上所有实现Session的动态Web服务器都实现了这种最基本的方式。这种方式就是在url后面增加一个参数,如

http://www.myserver.com/catalog/index.html;jsessionid=1234

这里的jsessionid就是增加的参数。每次访问页面的时候都会带上这个参数,这样服务器就可以获取这个凭证了。当然这种URL的改写任务是由Web容器负责的,用户是不用考虑的。

       3SSLSecurity Sockets Layer SessionSSL本身就实现了不同用户的标识,而Web容器可以很容易地利用SSL中的标识来鉴别不同的session,即用户。

 

参考:Java Servlet Specification Version 2.4

 

 <script type="text/javascript"><!--google_ad_client = "pub-1992382271196226";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as_rimg";google_cpa_choice = "CAEQhZOgnAIaCFiKuGlYOCnaKJnA93MwAA";//--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 办公椅扶手坏了怎么办 玩刺客信条卡bug怎么办 我玩刺客信条1卡怎么办 玩刺客信条3卡死怎么办 mac玩刺客信条卡怎么办 阴部长了个疙瘩怎么办 两个人觉得累了怎么办 朋友把我拉黑了怎么办 下雨了怎么办我好想你 雨停怎么办我好想你 下雨天怎么办我好想你 天谕账号忘记了怎么办 天谕账号被冻结怎么办 促黄体生成素低怎么办 地暖家里太干燥怎么办 剑灵摧毁了东西怎么办 想打嗝打不出来怎么办 孩子满100天要怎么办 宝宝吃奶粉过敏了怎么办 1岁宝宝不喝奶粉怎么办 母乳不够宝宝不喝奶粉怎么办 宝宝吃奶粉上火了怎么办 我小孩不喝奶粉怎么办 2岁宝宝不喝奶粉怎么办 婴儿吃奶粉上火了怎么办 100天的宝宝咳嗽怎么办 40天的小孩咳嗽怎么办 40天的婴儿咳嗽怎么办 50天的婴儿咳嗽怎么办 宝宝20天感冒了怎么办 1个月宝宝咳嗽怎么办 40天的宝宝干咳怎么办 百天的宝宝咳嗽怎么办 50天的孩子咳嗽怎么办 百天宝宝咳嗽有痰怎么办 1岁半宝宝拉肚子怎么办 百天的宝宝拉肚子怎么办 激战2帧数三十多怎么办 太受欢迎了怎么办txt微 太受欢迎了怎么办网盘 太受欢迎了怎么办微盘