HTTP会话的使用与管理

Posted TaoHF

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP会话的使用与管理相关的知识,希望对你有一定的参考价值。

HTTP会话的使用与管理

一、会话简介

http是无状态协议,需要在http请求中添加一些额外的用于跟踪客户状态的数据来区分不同的用户。

会话机制是用来跟踪客户状态的普遍解决方案。会话是指在一段时间内单位客户与web应用的一连串相关的交互过程。

在购物网上,一个用户从开始购物到最后结账,整个过程为一个会话。

 

二、javax.servlet.http.HttpSession接口

会话开始,servlet创建一个HttpSession对象,该对象存放客户状态信息。每个HttpSession对象有一个唯一的标志符。SessionID

会话运作流程

 三、生命周期与会话范围

注意区别一下三个范围:

web应用范围:共享数据作为ServletContext对象的属性而存在

请求范围:共享数据作为ServletRequest对象的属性存在

会话范围:浏览器端与一个web应用进行一次会话的过程,共享数据作为HttpSession对象的属性存在

HttpSession接口常见方法

getId():返回sessionID

invalidate():销毁当前的会话,Servlet容器会释放HttpSession对象占用的资源

setAttribute(String name,Object value):将一对name/value属性保存在httpSession对象中

getAttribute(String name):根据Name参数返回保存在HttpSession对象里面的属性值

getAttributeNames():以数组的方式返回HttpSession里面的所有的属性名

四、会话持久化

把内存中的HttpSession对象保存到文件系统或数据库中。

  好处:

    节约内存空间---把处于不活动状态的HttpSession对象转移到文件系统或数据库中,提高对内存资源的利用率。

    确保服务器在重启或单个web应用重启后,能恢复重启前的会话。

servelt对所有可以序列化的属性进行持久化,确保存放在会话范围内的共享数据不会丢失。----可序列化的属性是指属性所属的类实现了java.io.Seralizable接口。

 

以上是关于HTTP会话的使用与管理的主要内容,如果未能解决你的问题,请参考以下文章

HTTP会话的使用和管理

JavaWeb:会话与状态管理

通过 HTTP 请求实例使用会话与在 Laravel 中使用全局会话助手之间的区别

session management会话管理的原理

Servlet会话管理

使用Cookie进行会话管理