- 浏览: 379071 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
-
angryid:
dsafddsfssssssssddsdsasssssssss ...
freemarker学习笔记---assign标签 -
lylovejava0:
数据库里字段不能转换。。这样会慢死。。在说如果表里有分区等设置 ...
Oracle 时间段查询 -
greatjone:
必须得评论下,这篇博文相当实用,在csdn上找个东西老还要积分 ...
MyEclipse下安装jad插件 -
mytream:
...
模拟tomcat工作原理 -
liujianche11:
小心点 createdate<=to_date('20 ...
Oracle 时间段查询
这是J道论坛中关于Session、Cookie讨论中一个道友的理解,我觉得很好,就把它给转过来了,说实在话J道论坛中的高手是很多的,不过前几年论坛还比较火,近年不是很好了.
1、HTTP协议本身是“连接-请求-应答-关闭连接”模式的,是一种无状态协议(HTTP只是一个传输协议);
2、Cookie规范是为了给HTTP增加状态跟踪用的(如果要精确把握,建议仔细阅读一下相关的RFC),但不是唯一的手段;
3、所谓Session,指的是客户端和服务端之间的一段交互过程的状态信息(数据);这个状态如何界定,生命期有多长,这是应用本身的事情;
4、
由于B/S计算模型中计算是在服务器端完成的,客户端只有简单的显示逻辑,所以,Session数据对客户端应该是透明的不可理解的并且应该受控于服务
端;Session数据要么保存到服务端(HttpSession),要么在客户端和服务端之间传递(Cookie或url
rewritting或Hidden input);
5、由于HTTP本身的无状态性,服务端无法知道客户端相继发来的请求是来自一个客户的,所以,当使用服务端HttpSession存储会话数据的时候客户端的每个请求都应该包含一个session的标识(sid, jsessionid 等等)来告诉服务端;
6、会话数据保存在服务端(如HttpSession)的好处是减少了HTTP请求的长度,提高了网络传输效率;客户端session信息存储则相反;
7、
客户端Session存储只有一个办法:cookie(url rewritting和hidden
input因为无法做到持久化,不算,只能作为交换session id的方式,即a method of session
tracking),而服务端做法大致也是一个道理:容器有个session管理器(如tomcat的
org.apache.catalina.session包里面的类),提供session的生命周期和持久化管理并提供访问session数据的
api;
8、使用服务端还是客户端session存储要看应用的实际情况的。一般来说不要求用户注册登录的公共服务系统(如google)采用
cookie做客户端session存储(如google的用户偏好设置),而有用户管理的系统则使用服务端存储。原因很显然:无需用户登录的系统唯一能
够标识用户的就是用户的电脑,换一台机器就不知道谁是谁了,服务端session存储根本不管用;而有用户管理的系统则可以通过用户id来管理用户个人数
据,从而提供任意复杂的个性化服务;
9、客户端和服务端的session存储在性能、安全性、跨站能力、编程方便性等方面都有一定的区别,而且优
劣并非绝对(譬如TheServerSide号称不使用HttpSession,所以性能好,这很显然:一个具有上亿的访问用户的系统,要在服务端数据库
中检索出用户的偏好信息显然是低效的,Session管理器不管用什么数据结构和算法都要耗费大量内存和CPU时间;而用cookie,则根本不用检索和
维护session数据,服务器可以做成无状态的,当然高效);
另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而
且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。这里只提示一下:以Ctrl+N或Shift+点击链接方式打开的IE窗口是运行在同一个进程空
间的,cookie数据在进程空间中是共享的,而双击桌面上的ie图标打开的是一个新的进程,会话级的cookie(未明确指定生存期的cookie)在
新的IE窗口里面是无法访问到的。
评论
<div class="quote_div">
<div class="quote_title"> </div>
<p>应该是我语言表达不清楚所致,沟通和表达是一切的讨论(甚至争执、个人打架、国家打帐、星际战争)的根源。</p>
<p> </p>
<p>我换一种说法:</p>
<p>在N久N久之前,人们发明了HTTP,基于不明真相的原因,http是无状态的,人们非常喜欢这个协议;</p>
<p> </p>
<p>但是为了更好的用户体验(说实话我非常不喜欢这个借口),程序员们于是尝试通过添加一段字符串来作为交互ID,我们称之为SessionID(字符串名字也不限这个,如果你自己写client和server,想用什么用什么),当支持http协议的client端(http client端N多,不要没事总想着浏览器)发起请求时就会带上这个字符串,<span style="color: #0000ff;">至于怎么带上,方式不限(隐藏字段,默认cookie字段,自定义cookie字段,url地址,等等等等),</span>服务端拿到后就会开心的sysout("hello 我知道你是谁了:"+SessionID)。</p>
<p> </p>
<p>再后来,程序员们为了更懒,在服务端把这个sessionID字符串和一个对象关联(未必是对象,随你喜欢,反正是和一种资源关联),于是每次客户端请求时,他们能从这个“关联资源”中取得很多信息,程序员们非常的高兴。</p>
<p> </p>
<p>一次加班后,一群程序员去泡吧,无意中聊到了那个让人爱恨交加的字符串,一个叫javaeye的程序员说,我们把服务器端的那个关联资源起名叫session吧,大家起哄认同。</p>
<p> </p>
<p>N年之后的2010年,在景德镇的网络上有人发了篇帖子“Session、Cookie 完全理解”,Zzz</p>
<p> </p>
</div>
<p><br>jsessionid 是否就是 <span style="color: #0000ff;">自定义cookie字段?</span></p>
放 一个hashmap
可以模拟 session
不过内存很快用光光
Map session = appliction.getAttribter('mysession'); Cookie me = request.getCookie(); String sessionid = me.get('sessionid'); if(sessionid==null||sessionid.length==0){ sessionid = makeAKey(session.getKeySet()); } Objection obj = session.get(sessionid); sysout(obj); session.set(sessionid,"i will be back"); repson.setCookie(....('sessionid',sessionid));
<div class="quote_div">
<div class="quote_title">mlw2000 写道</div>
<div class="quote_div">
<div class="quote_title">mqlfly2008 写道</div>
<div class="quote_div">
<div class="quote_title">mlw2000 写道</div>
<div class="quote_div">
<div class="quote_title">bill2004158 写道</div>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
</div>
<p>楼主说的应该是在讨论session的客户端(IE,firefox,chrome,甚至自己写的一个支持http的小程序)支持,看楼主的内容水平应该这个(<span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊</span>)道理</p>
</div>
<p><br>实在很好奇什么叫做session的客户端,就像楼主说的,session要不就是在传输过程中,要不就是在服务器上存储,session的客户端,天,我理解不了了!个人理解的cooke应该是用户电脑本机带上了服务器端存储的session的id值!拿出来对应,然后可以取得相应数据!实在很想弄明白session的客户端是个什么东东</p>
</div>
<p> </p>
<p>应该是我语言表达不清楚所致,沟通和表达是一切的讨论(甚至争执、个人打架、国家打帐、星际战争)的根源。</p>
<p> </p>
<p>我换一种说法:</p>
<p>在N久N久之前,人们发明了HTTP,基于不明真相的原因,http是无状态的,人们非常喜欢这个协议;</p>
<p> </p>
<p>但是为了更好的用户体验(说实话我非常不喜欢这个借口),程序员们于是尝试通过添加一段字符串来作为交互ID,我们称之为SessionID(字符串名字也不限这个,如果你自己写client和server,想用什么用什么),当支持http协议的client端(http client端N多,不要没事总想着浏览器)发起请求时就会带上这个字符串,至于怎么带上,方式不限(隐藏字段,默认cookie字段,自定义cookie字段,url地址,等等等等),服务端拿到后就会开心的sysout("hello 我知道你是谁了:"+SessionID)。</p>
<p> </p>
<p>再后来,程序员们为了更懒,在服务端把这个sessionID字符串和一个对象关联(未必是对象,随你喜欢,反正是和一种资源关联),于是每次客户端请求时,他们能从这个“关联资源”中取得很多信息,程序员们非常的高兴。</p>
<p> </p>
<p>一次加班后,一群程序员去泡吧,无意中聊到了那个让人爱恨交加的字符串,一个叫javaeye的程序员说,我们把服务器端的那个关联资源起名叫session吧,大家起哄认同。</p>
<p> </p>
<p>N年之后的2010年,在景德镇的网络上有人发了篇帖子“Session、Cookie 完全理解”,Zzz</p>
<p> </p>
</div>
<p>请问这段话的重点是不是在“一个支持http的小程序”是如何实现将sessionid传递给服务器端的。我其实也不太明白,讲解了很多好像还是表达“客户端从cookie或其他方式中取sessionid然后传给服务器端,在据此id从服务器端存储session对象的散列表中取session。”这个意思,并没有什么特别的呀。</p>
</div>
<p><br>个人认为浏览器就是实现了如何在页面之间不停跳转还能记住这个sessionId,这个应该是浏览器对session的支持,自己写的http的小程序一样要做的这些东西!核心都是维护一个sessionId,如何在页面跳转,如何在不同的页签之间保留这样的一个唯一值。然后浏览器通过怎么样的方式传递这个sessionId也是不同的支持!呵呵,mlw2000兄弟是个讲故事的高手!佩服 </p>
为什么要分别保存在客户端(PC)和服务器端。。。
这点最重要,理解了这点,再扩展,应用等,都能较快的掌握。。。
<div class="quote_div">
<div class="quote_title">mqlfly2008 写道</div>
<div class="quote_div">
<div class="quote_title">mlw2000 写道</div>
<div class="quote_div">
<div class="quote_title">bill2004158 写道</div>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
</div>
<p>楼主说的应该是在讨论session的客户端(IE,firefox,chrome,甚至自己写的一个支持http的小程序)支持,看楼主的内容水平应该这个(<span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊</span>)道理</p>
</div>
<p><br>实在很好奇什么叫做session的客户端,就像楼主说的,session要不就是在传输过程中,要不就是在服务器上存储,session的客户端,天,我理解不了了!个人理解的cooke应该是用户电脑本机带上了服务器端存储的session的id值!拿出来对应,然后可以取得相应数据!实在很想弄明白session的客户端是个什么东东</p>
</div>
<p> </p>
<p>应该是我语言表达不清楚所致,沟通和表达是一切的讨论(甚至争执、个人打架、国家打帐、星际战争)的根源。</p>
<p> </p>
<p>我换一种说法:</p>
<p>在N久N久之前,人们发明了HTTP,基于不明真相的原因,http是无状态的,人们非常喜欢这个协议;</p>
<p> </p>
<p>但是为了更好的用户体验(说实话我非常不喜欢这个借口),程序员们于是尝试通过添加一段字符串来作为交互ID,我们称之为SessionID(字符串名字也不限这个,如果你自己写client和server,想用什么用什么),当支持http协议的client端(http client端N多,不要没事总想着浏览器)发起请求时就会带上这个字符串,至于怎么带上,方式不限(隐藏字段,默认cookie字段,自定义cookie字段,url地址,等等等等),服务端拿到后就会开心的sysout("hello 我知道你是谁了:"+SessionID)。</p>
<p> </p>
<p>再后来,程序员们为了更懒,在服务端把这个sessionID字符串和一个对象关联(未必是对象,随你喜欢,反正是和一种资源关联),于是每次客户端请求时,他们能从这个“关联资源”中取得很多信息,程序员们非常的高兴。</p>
<p> </p>
<p>一次加班后,一群程序员去泡吧,无意中聊到了那个让人爱恨交加的字符串,一个叫javaeye的程序员说,我们把服务器端的那个关联资源起名叫session吧,大家起哄认同。</p>
<p> </p>
<p>N年之后的2010年,在景德镇的网络上有人发了篇帖子“Session、Cookie 完全理解”,Zzz</p>
<p> </p>
</div>
<p>请问这段话的重点是不是在“一个支持http的小程序”是如何实现将sessionid传递给服务器端的。我其实也不太明白,讲解了很多好像还是表达“客户端从cookie或其他方式中取sessionid然后传给服务器端,在据此id从服务器端存储session对象的散列表中取session。”这个意思,并没有什么特别的呀。</p>
但还是有一个细节不懂,
在服务端把这个sessionID字符串和一个对象关联,
请问这个关联是怎么做到的,能不能举个例子
问一下,你指的IE是IE6吗?至少我用IE8,在所谓的“新的IE窗口里面”是可以访问的
<div class="quote_div">
<div class="quote_title">mlw2000 写道</div>
<div class="quote_div">
<div class="quote_title">bill2004158 写道</div>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
</div>
<p>楼主说的应该是在讨论session的客户端(IE,firefox,chrome,甚至自己写的一个支持http的小程序)支持,看楼主的内容水平应该这个(<span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊</span>)道理</p>
</div>
<p><br>实在很好奇什么叫做session的客户端,就像楼主说的,session要不就是在传输过程中,要不就是在服务器上存储,session的客户端,天,我理解不了了!个人理解的cooke应该是用户电脑本机带上了服务器端存储的session的id值!拿出来对应,然后可以取得相应数据!实在很想弄明白session的客户端是个什么东东</p>
</div>
<p> </p>
<p>应该是我语言表达不清楚所致,沟通和表达是一切的讨论(甚至争执、个人打架、国家打帐、星际战争)的根源。</p>
<p> </p>
<p>我换一种说法:</p>
<p>在N久N久之前,人们发明了HTTP,基于不明真相的原因,http是无状态的,人们非常喜欢这个协议;</p>
<p> </p>
<p>但是为了更好的用户体验(说实话我非常不喜欢这个借口),程序员们于是尝试通过添加一段字符串来作为交互ID,我们称之为SessionID(字符串名字也不限这个,如果你自己写client和server,想用什么用什么),当支持http协议的client端(http client端N多,不要没事总想着浏览器)发起请求时就会带上这个字符串,至于怎么带上,方式不限(隐藏字段,默认cookie字段,自定义cookie字段,url地址,等等等等),服务端拿到后就会开心的sysout("hello 我知道你是谁了:"+SessionID)。</p>
<p> </p>
<p>再后来,程序员们为了更懒,在服务端把这个sessionID字符串和一个对象关联(未必是对象,随你喜欢,反正是和一种资源关联),于是每次客户端请求时,他们能从这个“关联资源”中取得很多信息,程序员们非常的高兴。</p>
<p> </p>
<p>一次加班后,一群程序员去泡吧,无意中聊到了那个让人爱恨交加的字符串,一个叫javaeye的程序员说,我们把服务器端的那个关联资源起名叫session吧,大家起哄认同。</p>
<p> </p>
<p>N年之后的2010年,在景德镇的网络上有人发了篇帖子“Session、Cookie 完全理解”,Zzz</p>
<p> </p>
<div class="quote_div">
<div class="quote_title">bill2004158 写道</div>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
</div>
<p>楼主说的应该是在讨论session的客户端(IE,firefox,chrome,甚至自己写的一个支持http的小程序)支持,看楼主的内容水平应该这个(<span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊</span>)道理</p>
</div>
<p><br>实在很好奇什么叫做session的客户端,就像楼主说的,session要不就是在传输过程中,要不就是在服务器上存储,session的客户端,天,我理解不了了!个人理解的cooke应该是用户电脑本机带上了服务器端存储的session的id值!拿出来对应,然后可以取得相应数据!实在很想弄明白session的客户端是个什么东东</p>
<div class="quote_div">
<div class="quote_title">tianhandigeng 写道</div>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">
另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而
且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
</div>
<p>楼主说的应该是在讨论session的客户端(IE,firefox,chrome,甚至自己写的一个支持http的小程序)支持,看楼主的内容水平应该这个(<span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊</span>)道理</p>
<div class="quote_div">
<p><span id="body_11076472" class="tpc_content">
另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而
且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></p>
<p> </p>
</div>
<p><span id="body_11076472" class="tpc_content">session 在服务器端得嘛,关IE鸟事啊。。。。<br></span></p>
“同一个进程空间的”这句话是有问题的,如果明明两个iexplore.exe,为什么说同一个进程空间?但是ctrl+n的确是共享了session信息。
另外jdon我个人感觉,不是技术问题导致没落,而是思想问题,jdon的带头大哥人太矫情,什么事儿都得道一道,真要命。
其实你就是个搞技术的,技术工种,性质上和木匠还是厨师没啥两样,没见过哪个木匠和厨子这么矫情的@@
同感,这位带头大哥势忒大,无论他说的对错,都毋庸置疑,他就是天,他就地,他不可侵犯,而且还带着很多个人偏见与无知!!!
<div class="quote_div">
<span id="body_11076472" class="tpc_content"><span style="color: #ff0000;">另外,经常在论坛看到或听到同事说ie关掉了,session就没了,而且还争论的唾沫横飞,偶就感到很好玩,只能不置可否地笑笑。</span></span>
</div>
<br>下次建议把后面的一句放到前面。如果只有一个IE进程。。。哼哼
呵呵 不是我写的 是转载的 我也在努力理解啊
“同一个进程空间的”这句话是有问题的,如果明明两个iexplore.exe,为什么说同一个进程空间?但是ctrl+n的确是共享了session信息。
另外jdon我个人感觉,不是技术问题导致没落,而是思想问题,jdon的带头大哥人太矫情,什么事儿都得道一道,真要命。
其实你就是个搞技术的,技术工种,性质上和木匠还是厨师没啥两样,没见过哪个木匠和厨子这么矫情的@@
发表评论
-
MyEclipse 里面查看当前方法在哪儿被调用
2011-03-04 17:08 3018在MyEclipse里面,要看被调用方法的内容 直接 ... -
究竟什么是POJO?(转载)
2011-02-16 17:30 1448POJO ( Plain Old Java Objec ... -
网站用户单点登录系统解决方案
2011-02-15 09:50 1015网站用户单点登录系统 ... -
pageEncoding和charset的区别
2011-01-13 11:57 1183pageEncoding 是 JSP 文件 ... -
Cookie的详解(转载)
2010-12-22 09:55 1045Cookies现在经常被大家提到,那么到底什么是Cookies ... -
web.xml中Servlet Filter的调用顺序(转载)
2010-12-21 22:49 1411Filter是一个很有用的东西,使用filter可以修改req ... -
Java基础-关于session的详细解释(转载)
2010-12-19 14:59 750一、术语session 在我的经验里,session这 ...
相关推荐
4. **Cookie和Session**:在Web应用中,服务器通常使用Cookie来跟踪会话状态,而Session存储在服务器端,用于保持用户登录状态。通过管理Cookie和Session,服务器可以实现会话级别的验证。 5. **公钥基础设施(PKI)*...
5. **状态管理**:ASP.NET提供了多种状态管理机制,包括视图状态(ViewState)、控制状态(ControlState)、隐藏字段、Session和Cookie等。这些技术用于在页面间或服务器端保留用户数据。 6. **页面生命周期**:...
这涉及到session管理,可能还需要结合Cookie来实现用户状态的持久化。 2. **数据持久化**:论坛的帖子、评论等内容需要存储在数据库中,因此涉及SQL查询、事务管理以及数据库设计,如表结构、索引优化等。 3. **...
这通常涉及表单处理、GET和POST请求的解析、Cookie和Session的管理。对于初学者,理解这些概念是构建动态网站的基础。 在数据库集成方面,PHP与MySQL的结合是常见的选择。书中的章节可能包括如何连接MySQL数据库,...
- **Cookie**:说明Cookie的操作方法,如设置、读取等。 - **验证码**:介绍如何生成和验证图形验证码。 - **文件上传**:演示文件上传的实现过程和注意事项。 - **图像处理**:说明如何利用ThinkPHP5.0提供的图像...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...
同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...