Http协议是一种无状态协议。客户向服务器发出请求,然后服务器返回响应,连接就被关闭。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器端已没有以前的连接信息,无法判断这一次连接和以前的连接是否属于同一个客户。因此必须使用会话来记录有关连接信息。从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器称为一个会话。当客户访问服务器时,可能会反复连接这个服务器的几个页面,反复刷新刷新一个页面或不断地向一个页面提交信息等。服务器应当通过某种办法知道这是同一个客户,这时就需要session对象。
1.session的工作原理如下:
1)客户首次访问服务器的一个页面时,服务器就会为该客户分配一个session对象,同时为该session对象指定一个唯一的id,并且将该id号发送到客户端并写入到cookie中,使得客户端与服务器端的session建立一一对应关系。
2)当客户继续访问服务器上的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate方法使其失效,客户端与服务器的会话结束。
3)当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID.
1, HttpSession是在服务器端划拨出的一个区域,一般来说此区
域是以内存的方式存在的.
2, 一般来说HttpSession的数据结构和Map类,是以键对的
形式存储用户的数据,key用来区分每个不同的用户.
3, key一般来说是存放在用户浏览器的cookie中,通过HTTP请求
中的cookie域上送到服务器,服务器应用既可以用该cookie
定位到具体存放在服务器上的用户数据.
1、session的默认过期时间是30分钟,可修改的最大时间是1440分钟(1440除以60=24小时=1天)。
2、服务器重启或关闭Session失效。
注:浏览器关闭其实并不会让session失效!因为session是存储在服务器端内存当中的。客户端把浏览器关闭了服务器怎么可能知道?正确的解释或许应该是浏览器关闭后不会去记忆关闭前客户端和服务器端之间的session信息且服务器端没有将sessionId以Cookie的方式写入到客户端缓存当中,重新打开浏览器之后并不会带着关闭之前的sessionId去访问服务器URL,服务器从请求中得不到sessionId自然给人的感觉就是session不存在。
当我们关闭服务器时Tomcat会在安装目录workCatalinalocalhost项目名目录下建立SESSIONS.ser文件。此文件就是Session在Tomcat停止的时候 持久化到硬盘中的文件. 所有当前访问的用户Session都存储到此文件中. Tomcat启动成功后.SESSIONS.ser 又会反序列化到内存中,所以启动成功后此文件就消失了. 所以正常情况下 重启Tomcat用户是不需要登录的. 注意有个前提,就是存储到Session里面的user对象所对应的User类必须要序列化才可以。aspnet responsewrite乱码
1.ServletContext getServletContext()
Returns the ServletContext to which this session belongs
2.java.lang.Object getAttribute(java.lang.String name)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-36808-13.html
把一切问题都理解为经济问题