Session的生命周期 服务器中的seesion是何时建立的?
来源:互联网 发布:json 判断key是否存在 编辑:程序博客网 时间:2024/04/28 05:36
下面是关于Session的生命周期的一段常见描述
Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session"活跃(active)"了一次。服务器真的会自动创建Session吗?是tomcat这种容器帮我们做了吗?其实这种说法不是很准确
我们经常会写这样一段代码:
HttpSession session = request.getSession();
有些同学还知道这个方法有个重载,也可以这样写:
HttpSession session = request.getSession(true); 或 HttpSession session = request.getSession(false);
那这些有什么区别?官方解释如下:
true : 当session == null 时创建一个新的session
false : 返回当前的session
request.getSession(); 等同于 request.getSession(true);
这个解释一直让我很费解,我一直认为session是不会为null的,今天仔细查了一个资料,自己也亲自测试了一把,原来我一直的想法大错特错了
session是服务器建立的,但服务器不会主动建立,当一个请求过来时,服务器并不会建立一个session,而是要这样:
request.getSession();
当我们用程序通知服务器时它才会建立一个会话。
在jsp文件中有一个默认的属性 <%page session="true" />,翻译成java后就是:
session = pageContext.getSession();
所以当我们访问一个jsp文件的时候,如果没有去更改这个默认值,那也会建立一个会话,这也是大多数人会认为自动创建session的原因了,其实还是相当于我们主动通知服务器去创建
综上所述:
Tomcat这类服务器不会自动的创建session,只有当我们主动通知它时,才会创建会话
- Session的生命周期 服务器中的seesion是何时建立的?
- Seesion的几个认识
- 在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
- 图片是何时加载的
- websocket的seesion的getOpenSessions
- java服务器何时创建Session
- 产品生命周期的建立
- spring 控制hibernate的session何时关闭.
- spring 控制hibernate的session何时关闭.
- Session Bean 的生命周期
- session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- Session的生命周期
- session的生命周期
- 将多个js函数绑定到onload事件上
- 线程启动start后,如何停止的?
- iOS学习之二十:应用的归档打包以及distribution测试和上传到App Store
- JS 控制check复选框全选/反选
- 下班了晚上请同学吃饭
- Session的生命周期 服务器中的seesion是何时建立的?
- ThreadLocal源码分析
- 电脑快捷键
- mtk android settings
- VS2008输入中文乱码
- DbDataAdapter 的Fill(DataTable dataTable) 和 Update(DataSet dataSet);方法的使用
- (intermediate) DFS的应用 UVA 12273 Palindromic DNA
- 数据库ORM框架GreenDao学习心得及使用总结
- js 动作与函数绑定