关于session机制

一、servlet中三个不同的数据存储范围

servlet中的request对象、session对象和servletContext对象是三个不同的存储数据的作用域。三者都提供了相同的操作属性的方法:
setAttribute(String name,Object object)
getAttribute(String name)
removeAttribute(String name)

但是三者存储数据的作用域不同:
request对象是一个生命很短的请求对象,它保存的数据只在下一个request对象中可以取得到,所以常用在转发请求时共享数据。

session对象是一个用户会话对象,当客户机首度访问服务器时session对象第一次创建,产生的数据会一直保存到这个session对象因超时或客户端关闭之前,所以一个session一般用于某一用户的相关数据存储。

servletContext对象代表了servlet的上下文环境,只要有web程序在运行中,这个对象就会一直有效,它存储的数据当然也会同时有效,所以servletContext常用于存放web程序的全局性数据

这三个对象范围内的数据有不同的生命周期:
request中的数据,只在一个请求应答的流程中有效
session中的数据对应客户机的浏览器进程,客户机的浏览器不关闭,服务器session中的数据就有效
servletContext中的数据随服务器的运行而存在

二、session分析

http是一种无状态协议,当客户机与服务器收发完页面信息之后,连接的socket对象会断开,而在web应用中常需要让服务器记住客户机的状态,以实现客户机与服务器的交互,这就需要用到session机制。

用户首次向站点发送请求时,会创建一个新的会话对象,即一个session,并分配一个唯一的sessionID给它,这个sessionID会作为请求的一部分,匹配用户与session对象。session机制让servlet能够跨多个请求维护状态和用户信息。servlet可以在session对象中添加属性和读取存储的属性值。

HttpServletRequest接口中有两个方法用于获取会话:
HttpSession getSession()创建一个新的会话,前提是当前没有与请求关联的会话
HttpSession getSession(boolean create)如果布尔值为true 且当前没有与请求关联的会话,则使用 getSession(boolean create) 创建会话。如果布尔值为false,如果没有与当前请求关联的会话,则返回null

session对象中添加、获取和删除java对象的三个方法
public void setAttribute(String name,Object value);
此方法用于在session中放入关联指定名字的对象
public void getAttribute(String name);
用于取得指定名字的对象
public void removeAttribute(String name);
用于删除指定名字的对象


session的关闭
session会由于在服务器端超时而自动无效
超时的时间设置有两种方式
一种是在session对象上调用setMaxInactiveInterval(int seconds)方法设置一个以秒为单位的超时时间
一种是在web.xml的<session-timeout>元素中设置以分钟为单位的超时时间
另外程序调用HttpSession.invalidate()方法或者服务器端的进程被停止也会关闭session
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值