您的位置:首页 > 其它

浅谈Session

2016-05-23 11:35 211 查看
最近在学java web部分,一开始对Session的整个知识结构比较困惑,查阅一些资料后结合自己的理解做一下整理总结,作为初学者,若理解有误,欢迎指正。

1、Session的概念

Session代表服务器与浏览器的一次会话过程,是常用的会话跟踪技术。在Servlet当中session就是HttpSession对象。session是一个容器,可以存放会话过程中的任何对象。

2、Session被创建的时机

我一开始和很多人一样以为一旦客户端访问就会生成session对象,后看发现其实Session的创建时机分为以下两种:

1)在Servlet中调用getSession()方法:

HttpSession session = request.getSession();

或者

HttpSession session = request.getSession(true);

2)JSP页面默认<%@page session=”true”%>

如果不显示地在jsp页面上指定SP页面默认<%@page session=”false”%>那么在JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession
session = HttpServletRequest.getSession(true);那么session对象就会被创建。

一般JSP页面没有显式禁止session,在打开浏览器第一次请求该jsp的时候,服务器会自动为其创建一个session对象,因为session会消耗内存资源,所以在不打算使用session时,应该在所有的JSP中使用<%@page
session=”false”%>将其关闭。

3、Session ID

当session对象创建的时候,同时也会为该对象分配一个唯一的标识符Session ID,当客户端之后对服务器再发送HTTP请求的时候,服务器先从HttpServletRequest对象中读取Session
ID,找到之前创建的sesion对象。

Session ID是cookie的形式保存在浏览器端。 这样在交互过程中浏览器可以自动的按照规则把Session ID发送给服务器。

4、Session删除的时间:

1)Session超时:超时指的是连续一定时间服务器没有收到该session所对应客户端的请求,并且这个时间超过了服务器设置的session超时的最大时间。服务器会将该session对象清除;

2)程序调用HttpSession.invalidate();

3)服务器关闭或服务停止;

需要注意的是session不会因为浏览器的关闭而删除。

session的创建和使用都是在服务端,而浏览器从来都没得到过session对象。但浏览器可以请求Servlet或者JSP来获取session中保存的信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: