日期:2014-05-19  浏览次数:20737 次

session 的机制是什么?如果我把cookie删除了 能得到当前用户的session吗?
我有几个问题想请教,
1.session 的机制是什么?
2.如果我把cookie删除了 能得到当前用户的session吗?
3.session 是整个回话级别,当我关闭当前访问的网页签,开启新的网页时,之前的session还有效吗?

------解决方案--------------------
1、Session是一种保持浏览器和服务器之间连接状态的机制。实际上是靠cookie机制产生的一种方式。
2、cookie分为内存cookie和普通cookie,浏览器和服务端保持session就是靠内存cookie,内存cookie不往硬盘里写,普通cookie会落盘。如果你完全禁止了cookie就不能用session了,你删除了还能用的(楼主可以自己做实验)。
3、你关闭页签这要看不同浏览器的机制了。要看这个浏览器的该也签关闭后,是否内存cookie跟着一起清掉,这个你可以再上网查详细的资料。
网上关于session的资料不少,建议楼主用“session详解”去搜索资料,百度文库里也会有很多文档,可以下下来研究下。希望说的能帮上楼主。

------解决方案--------------------
一般在服务端的Filter中使用该语句:HttpSession session=req.getSession(true);//如果没有该session,则自动创建一个新的session。拿到session去判断是不是有用户名和密码,如果有就表明登陆成功了,如果没有就表明没有登陆,则跳转到登陆页面,如果使用了用户名和密码,则再用这个语句拿到session,重复之前的工作就行了。楼主可以查"servlet session"关键字,很多资料和实例,你看了就明白了。
------解决方案--------------------
session 只存在于服务器中,每次交互是以sessionid同客户端交互的。

一次会话,sessionid是固定的;服务器根据这个sessionid确认是哪个客户端。

如果允许cookie,sessionid从服务器上下载下来后,存在于cookie中。下次请求,cookie主动把sessionid带上,告诉服务器,我就是上次那个。

如果禁止cookie,sessionid会在服务器每次请求响应中都被带上,会保存在http头文件中。

如果你关标签页,sessionid是不会变的,如果你关掉整个浏览器,再重新打开浏览器,服务器会为客户端重新生成一个sessionid。以前的sessionid服务器会自动维护,直到失效。
------解决方案--------------------
这叫做:java url重写,你根据这个关键字去搜索,很多资料的。楼主可以研究下。
------解决方案--------------------
多谢知道,学习中。。。
------解决方案--------------------
自己整理的:

【1、session的实现即机制是什么?】
称为“会话”。它具体是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。Session实际上是一个特定的时间概念。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。   当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索   出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与   此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 

【2、session和cookie的区别。】
session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。
session中保存的是对象,cookie中保存的是字符串。
客户端完全禁止cookie,session将失效。通常解决办法:重写URL来实现sessionId的保存,session跟踪
------解决方案--------------------
禁用 Cookie 通过 URL 来携带 session id 是很不安全的

一般来说禁用了 Cookie,那也没必要让他登录成功了!
------解决方案--------------------
可以去试试淘宝网,把 Cookie 禁用后,看看淘宝会不会让你登录成功,呵呵。
------解决方案--------------------
探讨

刚我验证了下,登录sina微博后,我禁用了cookie.结果是登录不了的.说明session对用户的识别是通过cookie的.

------解决方案--------------------
session存在于服务器,cookie存在于客户端,浏览器访问服务器的时候,服务器会将信息以set-cookie消息头的的格式发送到浏览器上,下次你在访问服务器的时候就可以直接看到上次你访问的东西,比如说商城的购物车。
当然如果cookie禁止了,可以使用URL重写来实现功能,cookie是客户端自己禁止的,服务器不让你通过URL重写登录你也没话说,也不太安全!
------解决方案--------------------
session放在服务器上, cookie是在客服机上面。
------解决方案--------------------
session肯定是需要客户端提供给服务端一个标示,服务端才能知道谁是谁。。至于这个标示怎么传送放在那里,方法就多种多样了。cookie是一种,直接把标示放在url上也可以,作为一个参数提交。