会话与会话技术(Session)

news2024/11/22 4:23:31

前言

Cookie将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享。但是如果当传递的信息较多时,Cookie技术会增大服务器程序处理的难度,因此,Servlet提供了另一种会话技术————Session,Session可以将会话数据保存到服务器中。

1、Session对象

Session类似于医院的就诊卡,卡上只有卡号。但当人们去医院就诊时,只要出示就诊卡,就可以查询到病人的就诊信息和病理档案

1.1 Session概述

当浏览器访问Web服务器时,Servlet容器就会创建一个Session对象和ID属性,当客户端后续访问服务器时,只要将ID传递给服务器,服务器就能判断出该请求是哪个客户端发送的,从而选择与之对应的Session对象为其服务

 除此之外,Session还具有更高的安全性,它将关键数据保存在服务器中。而Cookie将数据保存在客户端的浏览器中。因此Cookie是较为危险的,若客户端遭遇黑客攻击,Cookie信息容易被窃取,数据也可能被篡改,而运用Session可以有效的避免这种情况的发生

1.2 HttpSession API

Session是与每个请求消息紧密相关的,为此HttpServletRequest定义了用于获取Session对象的getSession()方法,该方法有两种重载形式:

1、public HttpSession getSession(boolean create)

参数create判断是否创建新的HttpSession对象,如果参数为true,则在相关的HttpSession对象不存在时创建并返回新的HttpSession对象,否则不创建新的HttpSession对象,而是返回null

2、public HttpSession getSession()

注意:由于getSession()方法可能会产生发送会话标识号的Cookie头字段,所以必须在发送任何响应内容之前调用getSession()方法

HttpSession接口的常用方法:

1、String getID()

功能:用于返回与当前HttpSession对象相关联的会话标识号

2、long getCreationTime()

功能:用于返回Session创建的时间,这个时间是创建Session的时间与1970年1月1日00:00:00之间的时间差毫秒的表示形式

3、long getLastAccessedTime()

功能:用于返回客户端最后一次发送与Session相关请求的时间,这个时间是发送请求的时间与1970年1月1日00:00:00之间的时间差毫秒的表示形式

4、void SetMaxInactiveInterval(int interval)

功能:用于设置当前HttpSession对象可空闲的以秒为单位的最长时间,也就是修改当前会话的默认超时间隔

5、boolean isNew()

功能:判断当前HttpSession对象是否是新创建的

6、void invalidate()

功能:用于强制使Session对象无效

7、ServletContext getServletContext()

功能:用于返回当前HttpSession对象所属于的Web应用程序对象,即代表当前Web应用程序的ServletContext对象

8、void setAttribute(String name,Object value)

功能:用于将一个对象与一个名称关联后存储到当前的HttpSession对象中

9、String getAttribute()

功能:用于从当前HttpSession对象中返回指定名称的属性值

10、void removeAttribute(String name)

功能:用于从当前HttpSession对象中删除指定名称的属性

1.3 Session的生命周期

Session也具有一定的生命周期

Session生效:Session在用户第一次访问服务器时创建。需要注意的是,只有访问JSP、Servlet等程序时才会创建Session。此外,还可调用request.getSession(true)强制生成Session。只访问HTML、IMAGE等静态资源并不会创建Session

Session失效:有两种方法可以使Session失效,分别是“超时限制”使Session失效和强制Session失效

  • “超时限制”使Session失效

Web服务器采用“超时限制”判断客户端是否还在继续访问。在一定时间内,如果某个客户端一直没有请求访问,那么Web服务器就会认为该客户端已经结束请求,并且将与该客户端会话所对应的HttpSession对象变成垃圾对象,等待垃圾收集器将其从内存中彻底清除。如果浏览器超时后再次向服务器发出请求访问,那么服务器会创建一个新的HttpSession对象,并为其分配一个新的ID属性

  • 强制Session失效

invalidate()方法可以强制使Session对象失效,具体用法:

HttpSession session = request.getSession();

session.invalidate();//注销该request的所有session

配置Session失效时间:

  • 1、在项目的web.xml文件中配置Session的失效时间,具体代码(默认单位为分钟):
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

2、在Servlet程序中手动设置Session的失效时间,具体代码(默认单位为秒):

session.SetMaxInactiveInterval(30 * 60)//设置为-1为永不超时

在Tomcat安装目录的conf\web.xml文件中也有

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

设置为0或负数,表示永不超时

该文件对站点下所有Web应用程序都有效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/457540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟李沐学AI——实用机器学习(入门版)

机器学习目录 2.1 探索性数据分析 2.2 数据清理 2.3 数据变换 2.4 特征工程 2.5 数据科学家的日常 Stanford University Practical machine learning 2.1 探索性数据分析 ​ 对目标的ftr数据进行处理&#xff0c;针对不同的信息做出不同的图形 输出数据集的行数和列数以及前十…

ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…

1、TI335x环境建立

记录裸机开发&#xff0c;TI A8系列处理器的AM335x过程&#xff0c;本次开发的是3352&#xff0c;在此基础上开发。 1、硬件准备&#xff1a; 已经测试调试ok的3352测试板&#xff0c;经过查看发现&#xff0c;am3352引出的下载接口是JTAG口&#xff0c;而我手里只有Jlink&…

Kubernetes---Pod调度、标签、配额、策略

静态pod 静态pod由user直接创建调用&#xff0c;不能迁移 由kebelet守护进程直接管理的pod&#xff0c;无需APIserver监管 kubelet监视每个静态pod 静态pod永远绑定到一个指定节点上的kubelet 静态pod spec不能引用其他API对象 静态pod配置路径/var/lib/kubelet/config.yaml里面…

CSS背景相关属性

一、背景颜色 属性名&#xff1a;background-color (bgc) 属性值&#xff1a;颜色取值&#xff1a;关键字&#xff0c;rgb表示法&#xff0c;rgba表示法&#xff0c;十六进制表示。 注&#xff1a; 背景颜色默认透明&#xff1a;rgba&#xff08;0&#xff0c;0&#xff0c…

C语言积锦

代码区&#xff1a;text 代码执行二进制码&#xff08;程序指令&#xff09; 具有共享、只读特性 数据区&#xff1a;1.初始化数据区data 2.未初始化数据区 bss 3.常量区 栈区&#xff1a;系统为每一个程序分配一个临时的空间 局部变量、函数信息、函数参数、数组。栈区大…

干货|Graphpad Prism也能做ERP图?So Easy!

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 不知道你是否注意过这样一个现象。 在心理学大会报告的时候&#xff0c;专家经常会说一句话&#xff1a; 这个结果很漂亮&#xff01;&#xff01;&#xff01; 第一次听见的时候&#x…

K8s图形化管理工具Dasboard部署及使用

文章目录 一、Dashboard简介二、Dashboard部署安装三、配置Dashboard登入用户1、通过Token令牌登入2、通过kubeconfig文件登入 四、Dashboard创建容器 一、Dashboard简介 Kubernetes Dashboard是一个Web UI&#xff0c;用于管理Kubernetes集群中的应用程序和资源。它提供了一个…

使用wireshark抓包理解tcp协议和tls

首先下载安装wireshark 打开软件 1.选则自己连结的网络&#xff1b; 此时就会捕获的数据 2.加上端口过滤。 3.启动一个本地的http服务(这里采用的nodejs)&#xff1b; // server.js import koa from koa; const app new koa(); app.use(ctx > {ctx.body "hell…

托福听力专项 // Unit1 Listening for Main Ideas // Practice with Lectures // 共4篇

目录 Listening for Main Idea Lecture A a music class 单词 内容总结 Lecture B 单词 错题分析 Lecture C 单词 错题分析 Lecture D 单词 Listening for Main Idea Lecture A a music class 单词 evolve(v)to develop slowlyincorporate(v)to take in or includ…

Spring Boot使用(基础)

目录 1.Spring Boot是什么? 2.Spring Boot使用 2.1Spring目录介绍 2.2SpringBoot的使用 1.Spring Boot是什么? Spring Boot就是Spring脚手架,就是为了简化Spring开发而诞生的 Spring Boot的优点: 1.快速集成框架,提供了秒级继承各种框架,提供了启动添加依赖的功能 2.内…

修炼汇编语言第一章:汇编基础知识概述

目录 前言 一、汇编语言的组成 二&#xff1a;存储器 三&#xff1a;指令和数据 四&#xff1a;存储单元 五&#xff1a;CPU对存储器的读写 地址总线 控制总线 数据总线 前言 汇编语言是数据结构&#xff0c;操作系统&#xff0c;微机原理等重要课程的基础&#xff0…

【算法】冒泡排序

一.冒泡排序 主要思想&#xff1a; 反复交换相邻的元素&#xff0c;使较大的元素 逐渐冒泡到数组的末尾&#xff0c;从而实现排序的效果 实现过程&#xff1a; 1.遍历待排序数组&#xff0c;比较相邻的元素&#xff0c;如果前面的元素比后面的元素大&#xff0c; 就交换这两…

系统集成项目管理工程师 笔记(第八章:项目进度管理)

文章目录 8.1 规划项目进度管理 2938.1.1 规划项目进度管理的输入 2938.1.2 规划项目进度管理的工具与技术 2948.1.3 规划项目进度管理的输出 295 8.2 定义活动 2968.2.1 定义活动的输入 2968.2.2 定义活动的工具与技术 2968.2.3 定义活动的输出&#xff08;两清单、一属性&…

【深度学习】学习率与学习率衰减详解:torch.optim.lr_scheduler用法

【深度学习】学习率与学习率衰减详解&#xff1a;torch.optim.lr_scheduler用法 文章目录 【深度学习】学习率与学习率衰减详解&#xff1a;torch.optim.lr_scheduler用法1. 介绍1.1 学习率与学习率衰减 2. TensorFlow中的学习率衰减3. PyTorch中的学习率衰减2.1 optimizer 综述…

md/分类/信号领域/数字信号处理及MATLAB实现/频率调制(FM).md

文章目录 本文链接https://zh.wikipedia.org/wiki/频率调制用Python模拟FM/PM调制解调过程波形变化频率调制我的 本文链接 打死他 调频&#xff08;英语&#xff1a;Frequency Modulation&#xff0c;缩写&#xff1a;FM&#xff09;是一种以载波的瞬时频率变化来表示信息的方…

Java文件操作必备技能,10个小技巧让你快速掌握!

前言 在我们日常的开发中&#xff0c;文件操作是一个非常重要的主题。文件读写、文件复制、任意位置读写、缓存等技巧都是我们必须要掌握的。在这篇文章中&#xff0c;我将给你们介绍 10 个实用的文件操作技巧。 使用 try-with-resources 语句处理文件 IO 流&#xff0c;确保在…

C++Vector类详解

目录 1.Vector介绍 2.Vector的常见使用 2.1 vector构造函数 2.2 vector iterator使用 2.3 vector空间增长问题 2.4 vector增删改查 2.5 vector迭代器失效问题 3.Vector深度剖析及模拟实现 3.1 模拟实现&#xff08;可跳过&#xff09; 3.2 不使用memcpy剖析 1.Vector介绍 ve…

【LeetCode】106. 从中序与后序遍历序列构造二叉树

1.问题 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出&#…

世优科技AI数字人产品“世优BOTA”发布!全面提升AI虚拟员工能力

2023年4月20日,“世优BOTA”产品发布会在北京圆满落幕。此次发布会上,世优(北京)科技有限公司(以下简称“世优科技”)正式发布了新一代AI数字人现象级产品——“世优BOTA”。来自现实世界的LiveVideoStack创始人包研与来自数字世界的世优虚拟主持人「阿央」通过新颖的互动开场方…