面试总结之Session生命周期与工作原理
2017-09-07 09:22
330 查看
一、概念
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。二、生命周期
1、创建时机:
Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。2、使用过程:
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。3、销毁时机:
1)Session超时:超时指的是连续一定时间服务器没有收到该Session所对应客户端的请求,并且这个时间超过了服务器设置的Session超时的最大时间。2)程序调用HttpSession.invalidate()。
3)服务器关闭或服务停止。
三、Session的工作原理
当客户端访问服务器时,服务器根据需求设置session,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,浏览器将这个session_id保存在内存中(还有其他的存储方式,例如写在url中),我们称之为无过期时间的cookie。浏览器关闭后,这个cookie就清掉了,它不会存在用户的cookie临时文件。以后浏览器每次请求都会额外加上这个参数值,再服务器根据这个session_id,就能取得客户端的数据状态。
四、注意事项
1、每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。2、新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。
3、如果客户端浏览器意外关闭,服务器保存的session数据不是立即释放,此时数据还会存在,只要我们知道那个session_id,就可以继续通过请求获得此session的信息。
4、session的创建和使用都在服务端,而浏览器从来都没得到过session对象。但浏览器可以请求Servlet(jsp也是Servlet)来获取session的信息。客户端浏览器真正紧紧拿到的是session ID,而这个对于浏览器操作的人来说,是不可见的。
参考文章:http://www.cnblogs.com/kucongzhi/archive/2010/07/13/1776728.html
http://blog.csdn.net/fangaoxin/article/details/6952954/
相关文章推荐
- android面试总结01 activity生命周期
- Session的生命周期和工作原理
- session的生命周期(自我总结)
- Mybatis的SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession生命周期总结
- 面试遇到的问题总结(一)
- Java面试基础概念总结
- CVTE面试总结
- Service生命周期自我总结
- 七夕前面试被虐总结
- 总结it类面试10大必备良品
- hibernate面试总结(转载)
- 配置Session变量的生命周期
- C/C++校招笔试面试经典题目总结八
- baidu 实习生面试的总结
- Android面试及使用技术点总结
- JavaWeb---总结(十二)Session
- Java面试知识点总结1
- 基础总结篇之一:Activity生命周期
- Androd中的生命周期的总结
- 腾讯后台开发面试总结