jsp中session存在问题(重)
当浏览器连接上一个网页时,session就被创建,在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的sessi...
当浏览器连接上一个网页时,session就被创建,在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的session还存在吗,如果否,代表离开服务器session就注销,如果是,代表原服务器session存在和新服务器session在一起并存是
只要浏览器未关闭,session就在吗,还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替,这样子session还存在吗 展开
只要浏览器未关闭,session就在吗,还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替,这样子session还存在吗 展开
4个回答
展开全部
在jsp页面中,如果没有明确的给出 <% @page session="false"%>,web服务器就会自动创建session。
过程是这样的,第一次在浏览器中查询某个jsp页面,web服务器接到请求,会根据服务器端的jsp页面创建java文件。如果没有给出<% @page session="false"%>,jsp会自动的、偷偷的增加一句javax.servlet.http.HttpSession session = request.getSession(true)。session就是在这里被创建的。然后编译calss文件,生成html页面。
session的一个特性:存在于服务其中。它在服务器中作为一个对象使用的。
session的另一个特性:session具有周期。session过期的时间是可以设置的。
session还有一个特性:具有独立性,拥有自己的id。这个id可以被浏览器记住。
下面来回答问题:
第一个问题:在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的session还存在吗?
答:所谓到另一个服务器,就是在浏览器端访问另一个网站。而没有给原来的网站服务器通信,原来session肯定不会被关闭。只要不超过session的周期,还是存在的。
问题二:如果是,代表原服务器session存在和新服务器session在一起并存 只要浏览器未关闭,session就在吗?
答:只要不超过session的周期,还是存在的。另,你说的session并存没错,但不在同一个地方,它在不同的服务器里面。你用的浏览器里并存的只是session的id,用来区分session的。
问题三:还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替,这样子session还存在吗。
答:你这样的说法我有点迷惑,就按你重启服务器来回答了。session是对象,你重启服务器,原来的对象自然就没了,session也就不存在了。
由于本人所学有限,回答可能有谬误,请指出。参考资料:http://hi.baidu.com/ckcvrzvwrubemsq/item/c8d4c58c48c4062c110ef32f
过程是这样的,第一次在浏览器中查询某个jsp页面,web服务器接到请求,会根据服务器端的jsp页面创建java文件。如果没有给出<% @page session="false"%>,jsp会自动的、偷偷的增加一句javax.servlet.http.HttpSession session = request.getSession(true)。session就是在这里被创建的。然后编译calss文件,生成html页面。
session的一个特性:存在于服务其中。它在服务器中作为一个对象使用的。
session的另一个特性:session具有周期。session过期的时间是可以设置的。
session还有一个特性:具有独立性,拥有自己的id。这个id可以被浏览器记住。
下面来回答问题:
第一个问题:在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的session还存在吗?
答:所谓到另一个服务器,就是在浏览器端访问另一个网站。而没有给原来的网站服务器通信,原来session肯定不会被关闭。只要不超过session的周期,还是存在的。
问题二:如果是,代表原服务器session存在和新服务器session在一起并存 只要浏览器未关闭,session就在吗?
答:只要不超过session的周期,还是存在的。另,你说的session并存没错,但不在同一个地方,它在不同的服务器里面。你用的浏览器里并存的只是session的id,用来区分session的。
问题三:还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替,这样子session还存在吗。
答:你这样的说法我有点迷惑,就按你重启服务器来回答了。session是对象,你重启服务器,原来的对象自然就没了,session也就不存在了。
由于本人所学有限,回答可能有谬误,请指出。参考资料:http://hi.baidu.com/ckcvrzvwrubemsq/item/c8d4c58c48c4062c110ef32f
更多追问追答
追问
第一个问题:在同一个服务器下,session的对象不变,当离开当前服务器,来到另一个服务器时(浏览器未关闭)那么原服务器的session还存在吗?再加上一句
还有我说的是在同一个窗口中打开原先的服务器被新的服务器代替(举个例子:这句话的意思就是浏览器未关闭,原本是百度的服务器下的网站,现在变到网易的网站,网站不是新窗口打开而是老窗口打开),这样子session还存在吗。
把我后面加上的话连起来再看遍,再解释下
追答
你不理解的话看看我说的那三个特性,推理一下就是答案了。
session根本不在浏览器端。所以你没办法主动让session消失。所以在任何情况下浏览另一个服务器,session都不会消失。
session消失有两种情况:一,长时间不浏览该网站,网站session过期。二,请求到了含有的jsp页面,session消失。
注:session不消失并不一定不代表可用。比如浏览器关了,sessionID就没了,重启浏览器重新浏览该网站,即使session存在,浏览器也不知道(没cookie参与)。
可以参考我说的三个特性考虑,希望对你有帮助。
参考资料: http://hi.baidu.com/ckcvrzvwrubemsq/item/c8d4c58c48c4062c110ef32f
展开全部
如果真的是服务器变了的话。
如果服务器端没有显示的销毁你的session,那么你的session还存在于之前服务器的内存中。
只是新响应你的服务器到的访问不到了。
但是我们平常上淘宝啊什么的似乎并不是这样,这事因为淘宝有多服务器之间的session共享技术(我们老师以前去淘宝面试最后的一个问题就是session在多服务器之间的共享……)。
另外即使session没有了,我们也可以有cookie么。
再给你说一下session的原理吧:
很久以前看的了,可能有些地方不是很准确,但是思路就是这样的。
首先session其实是基于cookie的,如果你第一次访问,那么你的请求信息中是没有cookie的,这样服务器端就会为你new一个session(如果有的话),下次当你再访问的时候,你的请求信息中就会有类似于cookie:uid=fdfdsfsfsafasfsafasgdfg(差不多就是这样了)的信息,服务器就根据你的这个信息去在内存中查找对应的session,如果找到了就找到了,如果没找到,那么服务器会再new一个给你。
如果服务器端没有显示的销毁你的session,那么你的session还存在于之前服务器的内存中。
只是新响应你的服务器到的访问不到了。
但是我们平常上淘宝啊什么的似乎并不是这样,这事因为淘宝有多服务器之间的session共享技术(我们老师以前去淘宝面试最后的一个问题就是session在多服务器之间的共享……)。
另外即使session没有了,我们也可以有cookie么。
再给你说一下session的原理吧:
很久以前看的了,可能有些地方不是很准确,但是思路就是这样的。
首先session其实是基于cookie的,如果你第一次访问,那么你的请求信息中是没有cookie的,这样服务器端就会为你new一个session(如果有的话),下次当你再访问的时候,你的请求信息中就会有类似于cookie:uid=fdfdsfsfsafasfsafasgdfg(差不多就是这样了)的信息,服务器就根据你的这个信息去在内存中查找对应的session,如果找到了就找到了,如果没找到,那么服务器会再new一个给你。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个应该要看session存储的机制了,比方说有的系统当一个请求道服务器后,服务器根据策略判断
次IP,COOKIE等等信息判断次用户的信息是否存在。就想百度可以开机登录一样。
另外,有的应用是将session存在数据库中,根据设置不同session过期时效不同,在时效内不论你登录多少次,多少个请求都可以是一个session。
另外,就像喃星呓说的那样,当服务器采用的是集群方式的时候,会有一个缓存服务器,这些信息是在缓存服务器共享使用的。根据情况不同,这个结果是不同的。
次IP,COOKIE等等信息判断次用户的信息是否存在。就想百度可以开机登录一样。
另外,有的应用是将session存在数据库中,根据设置不同session过期时效不同,在时效内不论你登录多少次,多少个请求都可以是一个session。
另外,就像喃星呓说的那样,当服务器采用的是集群方式的时候,会有一个缓存服务器,这些信息是在缓存服务器共享使用的。根据情况不同,这个结果是不同的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
session表示会话,不同服务器对应着不同的应用程序,就好比你在浏览器同时打开新浪和腾讯的网页,就表示你正在进行着两个会话,那么只要页面没有关闭(也就是浏览器开着),那么这两个session应该是都存在的,我指的是360浏览器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询