session对象&运行机制

       当你看到 “会话” 这个词的时候,你会怎么理解呢?是交流、对话的意思吗?那毫无疑问绝对是的啦,只不过那是传统意义上的,或者说是日常生活中的意思,在计算机科学领域,它的意思就要引申一些了。在维基百科上是这样说的:

       在计算机科学领域来说,尤其是在网络领域,会话(session,Microsoft Windows 中文版译作工作阶段)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制,session在网络协议(例如telnet或FTP)中是非常重要的部分。

在百度百科上是这样说的:

       在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。

       这两个说的其实是一个意思,就是说在终端和服务器端之间建立了一个关联,在关联有效期内的过程就是一次会话。(你可以理解成你给10086打电话,通电话期间就是一次会话)

       Web应用中,会话指在一段时间内,一个用户通过浏览器与服务器之间进行的一些列的请求和响应的交互过程。 在一个会话中,用户可以访该Web应用系统中包括网页在内的多种资源。
       当用户(浏览器)向Web应用服务器发送第一次请求时,服务器会为该用户创建一个唯一标识的会话,会话一直延续到访问结束(浏览器关闭或用户长时间不访问Web应用)。而JSP中使用session对象来表示会话,即将信息保存在session对象中,方便用户在这个会话中随时获取(读到这儿你好像感觉不出来,可能会用疑问:哪有什么session,我怎么就可以随时获取了?其实不然,你每次再一次访问(我指的是在当前浏览器窗口,新开的不算)该Web应用系统时,其实浏览器都默默的使用了该已被保存了的信息,下面我会细讲)。
       浏览器关闭只是中断了和Web服务器的联系,但是session对象依然存在服务器终端(会有一个时常,通常为30min),如果时间超时,则Web服务器就会将其删除;如果服务器正常关闭,则将对象序列化到SESSIONS.ser文件内,当服务器重新启动,就会将该文件中session对象重新反序列化。

下面来说一下session的运行机制:

session的运行机制:
  1. 用户(浏览器)向Web应用服务器发送第一次请求时,请求头部中不包含sessionID(session唯一标识),则服务器会为该客户端创建一个新的session,并生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;
    在这里插入图片描述

  2. 用户(浏览器)再次向Web应用服务器发送请求时,请求头部包含sessionID,则服务器首先会通过sessionID找到对应的session,以确定是这个客户端访问服务器,此时sessionID不会再次随着本次响应返回给客户端;如果该session因超出时长而被Web服务器删除,重新创建一个新的session,生成一个与此session对应的sessionID,然后将sessionID随着本次响应返回给客户端;
    客户端没有禁用cookie的情况下,客户端使用cookie保存sessionID。如果cookie禁用,则会自动转化为用URL-rewriting(URL重写,URL中包含sessionID)技术实现。
    在这里插入图片描述

如果哪位同志感兴趣自己试了一把(假如用百度页面去试),会发现,sessionID和上面的形式不一样了,其实不用大惊小怪,sessionID是很重要的东西,当然需要严格保密了!
在这里插入图片描述


下面再来补充一些session常用的方法:

session常用方法:
  • setAttribute(“key”,“value”):设置指定名字的参数;session中保存的对象随着Tomcat服务器正常关闭(通过shutdown.bat关闭)而保存到work文件夹相应的目录中(Tomcat安装根目录\work\Catalina\localhost\xxx),随Tomcat的启动而重新使用。
  • getAttribute(“key”):获取指定属性的值,如果该属性值不存在则返回null;
  • removeAttribute(“key”):删除session中的一个属性;
  • getID(“key”):获取sessionID;
  • isNew():每个请求是否会产生新的session对象;
  • setMaxInactiveInterval():设置停止操作后session对象的有效时间。

session与cookie比较:

sessioncookie
保存位置服务器端浏览器客户端
存储类型对象字符串
生命周期随会话结束而关闭可指定时长
存放信息重要性重要信息非重要信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不动声色的小蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值