1、什么是session

session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从上述定义中可以看到,session实际上是一个特定的时间概念

(1)session是JSP的一个内置对象,是HttpSession类的实例。

(2)从客户打开浏览器并连接到服务器开始,到客户关闭浏览器窗口断开与服务器的连接,这一过程成为一个会话。

(3)当客户在同一个网站的不同页面之间进行切换并访问时,服务器是通过session来判断这些请求是否来自同一个客户。

(4)session一般有时间限制,长时间不操作可能会导致session失效。session失效后原session中保存的属性值会全部丢失。

(5)setMaxInactiveInterval(int i)  该方法可直接设定session的生存时间,超过该时间session会重新创建。(单位:秒)

-------------------------------

2、session对象的常用方法有:

long getCreationTime() : 返回session的创建时间;

public String getId() : 返回session的唯一ID号(该ID在session生成时,由JSP引擎创建)

public Object setAttribute(String name,Object value) : 按照键值对的方式在该session会话中保存一个属性(该属性是一个对象类型)

public Object getAttribute(String name) : 返回指定名称的属性的值(如果该名称的属性不存在,则返回null)

String[] getValueNames() : 返回一个(包含在此session中所有可用属性)的数组。

int getMaxInactiveInterval() : 返回一个时间,该时间表示当前session间隔多少时间之后会失效(单位:秒)。

3、session死亡发生在以下情况:

1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求 2.session被调用invalidate()方法强制弊了 3.jsp服务器重起或发生中断(此时应该是所有session都当了)

用户关闭浏览器后标志着

a.session将不再发送请求到服务器 b.该session将不会有人调用他的invalidate()方法

所以,此时只能等待session自己超时死亡,如果设置了该session的MaxInactiveInterval为-1,那么这个session只有在第3种情况下才能死了.可以通过判断seccion的ID编号来确定是否为同一个人

4、Session的生命周期

分为三个阶段.

首先是创建阶段 当客户端第一次访问某个jsp或者Servlet时候,服务器会为当前会话创建一个sessionID,不同会话都会有一个特定的sessionID,每次客户端向服务器发送请求时,即客户端要访问别的超链接网页时,都会将此sessionID携带过去,服务端会对此sessionID进行校验,来判断此session对象是属于哪个会话的.因为session对象是保存在服务器端的.

然后是活动阶段 某次会话当中通过超链接打开新页面属于同一次会话. 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话. 除非本次会话所有页面都关闭后再重新访问某个jsp或者Servlet将会创建新的会话.但要注意的是尽管创建了新的会话,但原有会话仍然存在,只是这个旧的sessionID仍然存在于服务器端,即session对象还在服务器端,只不过再也没有客户端会携带sessionID交予服务端校验,等到超时session对象将会销毁.即:创建了新的会话,并不意味着原有的会话就结束了,它还存在服务器端,等到设定的时间过后(即超时),便自动销毁

最后是销毁阶段 Session的销毁只有三种方式

1.调用session对象的invalidate()方法

2.Session过期(session超时意味着被销毁)

3.服务器重新启动

转载于:https://www.cnblogs.com/yinyue-123/p/8622709.html

jsp内置对象(四)-----session对象相关推荐

  1. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  2. JSP内置对象:request、response、out、session、application等内置对象

    Java程序的功能主要是由Java包下的各个类在运行期所产生的对象所提供,并且应用这些对象组织构建程序所需的功能. 所谓JSP内置对象,是指在JSP网页环境之下,用户不需要声明而直接可以在JSP网页中 ...

  3. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

  4. jsp内置对象------session

    session对象 JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息. 默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为 ...

  5. JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域

    JSP内置对象.基本动作指令.常见编译指令及四大作用域 (一) JSP工作原理 当一个jsp页面第一次被访问的时候,jsp将执行以下三个步骤,之后的访问速度会因为class文件已经生成而大大提高,当j ...

  6. Java Web复习——task03:JSP 内置对象和生命周期

    文章目录 前言 一.JSP内置对象 1.1 HttpServletRequest类和Request对象 1.2 HttpServletResponse类和Response对象 1.3 JspWrite ...

  7. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  8. jsp内置对象+Servlet

    一,jsp内置对象 1. request:请求对象: request.getParameter();得到一个参数:获得提交表单中唯一的值: request.getParameterValues();得 ...

  9. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  10. 【JSP笔记】第三章 JSP内置对象【上】

    2019独角兽企业重金招聘Python工程师标准>>> 1.内置对象简介:JSP内置对象是WEB容器创建的一组对象,不使用new关键就可以是用的对象. <% out.print ...

最新文章

  1. 牛!大佬原创的《Python 与数据分析 100 个案例》PDF 可以下载了
  2. 如何将mysql数据导入Hadoop之Sqoop安装
  3. 服务器弱口令修改,Tomcat服务器弱口令漏洞攻击实验
  4. 跨境电商谋定重整新业态-李玉庭:数据驱动中国电商大会
  5. 智能系统课件@丛爽老师-中国科学技术大学自动化系
  6. linux网页无法连接到服务器,linux – 无法连接到SMTP服务器
  7. SSM框架下log4j的配置和使用
  8. OpenMV(三)--实时获取摄像头图片
  9. 【英语学习】【Level 07】U08 Old Stories L4 Today's headline
  10. JAVA IO 以及 NIO 理解
  11. Blazor Hydra——在单个站点上托管多个Blazor SPA
  12. python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据
  13. jQuery窗口调整大小
  14. matlab:绘制box函数和高斯函数曲线并进行傅里叶变换
  15. Android Studio启动海马玩模拟器
  16. STM32F303+LAN9252的EtherCAT实现IO、AD、DA
  17. You Dont Know JS 中文版
  18. java零基础学习第九天
  19. 以下选项中、不是python对文件的打开模式的是_以下选项中,不是Python对文件的打开模式的是...
  20. 国科大--多媒体分析与理解--2019考试试题

热门文章

  1. bind1nd\bind2nd
  2. PostMessage()
  3. 计算机or笔记本,笔记本or台式机?大学生第一个烦恼被它解决了
  4. OpenCV_01 简介+无版权安装+模块分析
  5. LeetCode 1213. 三个有序数组的交集(哈希set)
  6. 程序员面试金典 - 面试题 16.19. 水域大小(BFS/DFS)
  7. LeetCode 409. 最长回文串(计数)
  8. java 父子级json组装不用递归_2020面试阿里Java研发岗题库总结,想虐面试官不能错过的面试宝典...
  9. 标记语言Markdown介绍以及日常使用
  10. 编程思想:面向对象和面向过程