看啥推荐读物
专栏名称: 安东尼_Anthony
目录
相关文章推荐
今天看啥  ›  专栏  ›  安东尼_Anthony

Session浅谈

安东尼_Anthony  · 简书  ·  · 2018-02-07 16:31

什么是session

session就是一块在服务器端开辟的内存空间,就好比客户在服务器端的账户,它们被服务器保存到一个Map中,这个Map被称之为session缓存。session的作用是来跟踪用户的操作状态。

Session网站登录中的使用

sessionId是由服务器创建针对用户(客户端)的,一个用户是一个sessionId,这也就是常用的登录注销处理的原因,对于同一个用户对同一个服务器的访问,会在session中设置一个key value,这样,就算是不同帐号登录,那也只是不同key,而不会是不同session。

Session和Cookie的主要区别

Cookie是把用户的数据写给用户的浏览器
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。

session在何时被创建

一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 <%@page session="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。

session何时被删除

综合前面的讨论,session在下列情况下被删除a.程序调用HttpSession.invalidate();或b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置;或c.服务器进程被停止(非持久session)

如何做到在浏览器关闭时删除session

严格的讲,做不到这一点。可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session。但是对于浏览器崩溃或者强行杀死进程这些非常规手段仍然无能为力。

参考链接

Session机制详解




原文地址:访问原文地址
快照地址: 访问文章快照