首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2SE / 基础类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
浏览器和服务器靠什么维持一个session?
[已结帖,结帖人:chain99081]
加为好友
发送私信
在线聊天
chain99081
常言笑
等级:
可用分等级:
贫农
总技术分:
0
总技术分排名:
322578
结帖率:
95.00%
发表于:
2008-08-21 20:01:01
楼主
如题
问题点数:
20
回复次数:
15
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
milooxu
miluxu
等级:
可用分等级:
贫农
总技术分:
171
总技术分排名:
66917
发表于:
2008-08-21 20:16:49
1
楼 得分:
0
个人感觉应该是有一个东西来存放这些信息的。看看高手怎么说的。关注
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhengpeiyong
~~我也曾有过一双美丽的翅膀,但我没用它在天上翱翔,而是放在锅里炖汤!~~
等级:
可用分等级:
中农
总技术分:
593
总技术分排名:
29254
发表于:
2008-08-21 20:47:29
2
楼 得分:
0
关注中,帮顶
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yeruping
Java狂热者
等级:
可用分等级:
短工
总技术分:
169
总技术分排名:
67454
发表于:
2008-08-21 21:48:44
3
楼 得分:
4
临时Cookies , 你可以实验一下,在页面设置一个session ,然后你去
取得所有CookieS ,你会发现取出有个临时cookie,大概叫jsession....
..什么的,记不清楚了,
session是依赖cookies的
如果浏览器禁用cookies你会发现session也不能用了!!!!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
norwolfli
傻瓜程序员都能写出机器认识的代码,关键你要写出人能认识的代码。
等级:
可用分等级:
富农
总技术分:
3351
总技术分排名:
6311
发表于:
2008-08-21 22:24:40
4
楼 得分:
4
首先说明,浏览器没有session,session只在服务器端维护.
浏览器只有jsessionId,也就是sessionId用来唯一标识session.用户每次请求会把这个sessionId提交给服务器.
sessionId会使用cookie保存,当浏览器不支持cookie时使用URLRewrite保存sessionId,也就是在请求的URL后加?,
例如:www.csdn.net?jsessionId=1234556677069695
jsessionId长度可以在应用服务器上设置,为保证唯一,一般会设置长一些.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
bining_hb
www.binkery.cn
等级:
可用分等级:
贫农
总技术分:
127
总技术分排名:
79305
发表于:
2008-08-21 23:47:13
5
楼 得分:
0
楼上说得很好
当你使用浏览器访问的时候,服务器在他的内存中给你开辟出一个内存,然后会分配一个seesionId给你,如果你的浏览器支持cookie时,这个id会被保存到你的电脑上,如果你的浏览器不支持的话,在你的下次请求时,会在请求的路径上加上这个id号。大概就是这样的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fire222
这会傻了
等级:
可用分等级:
长工
总技术分:
127
总技术分排名:
79305
发表于:
2008-08-22 00:07:23
6
楼 得分:
0
顶 4楼
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
aniude
重返荣耀
等级:
可用分等级:
掌柜
总技术分:
6846
总技术分排名:
3022
发表于:
2008-08-22 00:26:43
7
楼 得分:
0
难道你想hack?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
beiouwolf
beiouwolf
等级:
可用分等级:
掌柜
总技术分:
6983
总技术分排名:
2948
发表于:
2008-08-22 09:20:54
8
楼 得分:
4
session由服务器维持
生存周期由服务器指定
客户端在打开cookie的情况下,由cookie来标识自己的sessionid
当cookie不可用时,需要通过URLRewriter来实现sessionid的标识
以JSP来说,可以通过HttpServletResponse接口的encodeUrl(String)和encodeRedirectUrl(String)
来产生一个基于浏览器地址的jsessionid
注意格式,sessionid不是以"?"的Query字符串连接,而是以";"连接,是作为地址的一部分,不是查询字符串
示例: http://www.abc.com;jseesionid=1234567890
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
dracularking
苦行魔君 Math, the king of science, highest in beauty
等级:
可用分等级:
中农
总技术分:
13932
总技术分排名:
1148
发表于:
2008-08-22 10:00:24
9
楼 得分:
4
http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。
为了实现session,必须有浏览器支持。浏览器可以用cookie存储sessionid,这是最通用的做法。
但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。
好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空间中的,不保存在硬盘cookie中。每次浏览器发出的请求,都会在http header里 带上 sessionid来标识自己。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lude8880
淡泊以明志,宁静以致远。
等级:
可用分等级:
长工
总技术分:
1534
总技术分排名:
13702
发表于:
2008-08-22 10:03:26
10
楼 得分:
0
这个我知道,session内部也是用cookie解决的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ooo19841080xinxin
很多人还没我牛呢
等级:
可用分等级:
长工
总技术分:
387
总技术分排名:
39578
发表于:
2008-08-22 10:06:49
11
楼 得分:
0
哦Y
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lude8880
淡泊以明志,宁静以致远。
等级:
可用分等级:
长工
总技术分:
1534
总技术分排名:
13702
发表于:
2008-08-22 10:25:29
12
楼 得分:
0
具体哪本书里讲的忘了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ilysony
J2EE QQ群:43118262
等级:
可用分等级:
富农
总技术分:
1515
总技术分排名:
13799
发表于:
2008-08-22 13:35:56
13
楼 得分:
0
引用 9 楼 dracularking 的回复:
http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。
为了实现session,必须有浏览器支持。浏览器可以用cookie存储sessionid,这是最通用的做法。
但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。
好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空…
学习了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zzhua100
孤独行
等级:
可用分等级:
贫农
总技术分:
138
总技术分排名:
75819
发表于:
2008-08-22 16:07:09
14
楼 得分:
4
引用 9 楼 dracularking 的回复:
http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。
为了实现session,必须有浏览器支持。浏览器可以用cookie存储sessionid,这是最通用的做法。
但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。
好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空…
我一直以为是这种方式的:http协议是一次连接的,不保存客户端状态。
web 服务器收到一个http请求后在服务器端开辟一个存储空间(保存用户状态也就session)同时生成了一个唯一的sessionId,然后把客户端请求的资源连同这个sessionId发送给客户端,这时服务器的任务完成了,然后是客户端的事情了。
客户端就看用什么东西来接收服务器用http协议来发来的内容了,目前世界基本上都是浏览器了,浏览器可以用cookie来存储sessionId了,客户端在第二次向服务器发送请求的时候就会把这个sessionid带上了;此时web服务器在第二次接到用户请求时就可以根据传过来的sessionId从内存中获得用户状态了。
所以客户端如果把cookie给禁用了就保存不了sessionId,也就没法交互了。而某些系统因为必须要保存用户状态的,这就有了url重写的概念,web服务器基本上都有这个功能,在java中用encodeUrl(String)或 encodeRedirectURL(String) 来实现了,即web服务器在发送给客户端资源前要先跟客户端来次交互,判断客户端浏览器是否支持cookie,如果支持则将资源原样发回,如果不支持则在发回资源的url中加上jsessionId.如http://www.hjcenter.com/report.jsp;jsession=189FSFJAJIWFJA8990.
比如这样:1.mm给jj打电话要生日礼物
2.jj几乎跑遍了全市花光了所有的积蓄好不容易才买到了mm要的礼物然后准备给mm寄过去,jj妈妈看着儿子太可怜了提请说:"你这么的对她可要她记你的好",jj想想有道理。
3.于是jj就打电话给mm,终于腼腆滴、吱吱唔唔的表达了心里的想法
4.最后,jj却是在生日礼物上贴了个独一无二写满东西的大标签给mm寄过去了。
所以对这句“浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空...”我有点迷惑,不知道是不是自己想的错了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhang2008shu
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
9
总技术分排名:
238098
发表于:
2008-08-22 19:06:56
15
楼 得分:
0
今天 刚学的
session
request
pagecontext
aplication
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友