Servlet中Cookie和Session技术

news2024/11/19 4:29:57

一、状态管理

1.1 现有问题

HTTP协议是无状态的,不能保存每次提交的信息

如果用户发来一个新的请求,服务器无法知道它是否与上次的请求有联系

对于那些需要多次提交数据才能完成的Web操作,比如登录来说,就有问题了。

1.2 概念

将浏览器与Web服务器之间多次交互当做一个整体来处理,并且将多次交互所涉及到的数据(即状态)保存下来。

1.3 状态管理分类

客户端状态管理技术:将状态保存在客户端。代表性的是Cookie技术。

服务器状态管理技术:将状态保存在服务器端。代表性的是session技术(服务器传递sessionID时需要使用Cookie的方式)

二、Cookie的使用

2.1 什么是Cookie

Cookie是在浏览器访问Web服务器的某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的一小段数据。

一旦Web浏览器保存了某个Cookie,那么它在以后每次访问该Web服务器时,都应在HTTP请求头中将这个Cookie回传给Web服务器。

一个Cookie主要有标识该信息的名称(name)和值(value)组成。

2.2 创建Cookie

2.3 获取Cookie

2.4 修改Cookie

2.5 Cookie编码与解码

2.5.1 创建带中文Cookie

2.5.2 读取带中文Cookie

2.6 Cookie优点和缺点

2.6.1 Cookie优点

  • 可配置到期规则

  • 简单性:Cookie是一种基于文本的轻量结构,包含简单的键值对

  • 数据持久性:Cookie默认在过期之前是可以一直存在客户端浏览器上的

2.6.2 Cookie缺点

  • 大小受到限制:大多数浏览器对Cookie的大小有4K、8K字节的限制

  • 用户配置为禁用:有些用户禁用了浏览器或客户端设备接收Cookie的能力,因此限制了这一功能

  • 潜在的安全风险:Cookie可能会被篡改。会对安全性造成潜在风险或者导致依赖于Cookie的应用程序失败

三 Session对象(重要)

3.1 Session概述

(1)Session用于记录用户的状态。Session指的是一段时间内,单个客户端与Web服务器的一连串相关的交互过程。

(2)在一个Session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。

(3)Session是由服务器端创建的

3.2 Session原理

(1)Session会为每一次会话分配一个Session对象

(2)同一个浏览器发起的多次请求,同属于一次会话(Session)

(3)首次使用到Session时,服务器会自动创建Session,并创建Cookie存储SessionId发送回客户端

3.3 Session使用

Session作用域:拥有存储数据的空间,作用范围是一次会话有效

  • 一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话

  • 可以将数据存入Session中,在一次会话的任意位置进行获取

  • 可传递任何数据(基本数据类型、对象、集合、数组)

3.3.1 获取Session

Session是服务器端自动创建的,通过request对象获取

//获取Session对象

HttpSession session = request.getSession();

System.out.println(“ID:”+session.getId());//唯一标记

3.3.2 Session保存数据

使用setArrtibute(属性名,Object)保存数据到session中

session.setAttribute("key",value);//以键值对形式存储在session作用域中

3.3.3 Session获取数据

使用getAttribute("属性名");获取session中数据

session.getAttribute("key");//通过String类型的key访问Object类型的value

3.3.4 Session移除数据

使用removeAttribute("属性名");从session中删除数据

session.removeAttribute("key");//通过键移除session作用域中的值

3.4 Session与Request应用区别

(1)request是一次请求有效,请求改变,则request改变

(2)session是一次会话有效,浏览器改变,则session改变

3.4.1 Session应用

3.4.2 GetValueServlet.java

3.5 Session的生命周期

  1. 开始

第一次使用到Session的请求产生,则创建Session

  1. 结束

  • 浏览器关闭,则失效

  • Session超时,则失效

session.setMaxInactiveInterval(seconds);//设置最大有效时间(单位:秒)

  • 手工销毁,则失效

session.invalidate();//登录退出,销毁

3.5.1 Session失效

session.setManInactiveInterval(60*60);//设置session最大有效期为1小时

session.invalidate();//手工销毁

3.6 浏览器禁用Cookie解决方案(了解)

3.6.1 浏览器禁用Cookie的后果

服务器在默认情况下,会使用Cookie的方式将sessionID发送给浏览器,如果用户禁止Cookie,则sessionID不会被浏览器保存,此时,服务器可以使用URL重写这样的方式来发送sessionID

3.6.2 URL重写

浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址(即在原来的地址后面加上了sessionID)

3.6.3 实现URL重写

response.encodeRedirectURL(String url)生成重写的URL

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

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

相关文章

牛津大学最新 | LUMix:Mixup改进版,几行代码轻松涨点!

点击下方卡片,关注“自动驾驶之心”公众号ADAS巨卷干货,即可获取点击进入→自动驾驶之心【目标检测】技术交流群后台回复【LUMix】获取论文!!!摘要当使用噪声样本和正则化技术进行训练时,现代深度网络可以更…

云端数据“上榜”了!

背景介绍随着全球特别是北美地区VNF网络应用渐渐地往云上迁移,云环境中更高的性能需求变得越来越迫切。作为一流数据处理中心部门,随着大势所趋,不仅仅专研于裸机的性能数据,也开始关注Intel平台在不同云环境中的性能表现。在DPDK…

外汇天眼:日本央行突然上调收益率目标上限,日元10分钟内涨超2%

12 月 20 日,日本央行公布利率决议,并在货币政策会议上宣布堪称“黑天鹅事件”的重大政策转变。日本央行意外地调整了收益率曲线控制计划,宣布将收益率目标上限从 0.25% 上调至 0.5% 左右,同时又将 1 至 3 月日本国债购买规模提高…

Java当中多态的理解

1. 什么是多态 同一操作,作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。 对应到 Java 里就是针对同一个类型的对象,执行同一个方法,会表现出不同的行为。 简单点说: 就是用基类…

<Linux进程信号>——《Linux》

本节重点: 1. 掌握Linux信号的基本概念 2. 掌握信号产生的一般方式 3. 理解信号递达和阻塞的概念,原理。 4. 掌握信号捕捉的一般方式。 5. 重新了解可重入函数的概念。 6. 了解竞态条件的情景和处理方式 7. 了解SIGCHLD信号, 重新编写信号处理…

面试官:Docker 有几种网络模式?5 年工作经验都表示答不上来。。

docker容器网络 Docker在安装后自动提供3种网络,可以使用docker network ls命令查看 [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cd97bb997b84 bridge bridge l…

第1章 概述

第一章 概述 考试范围: 1.1-1.10 考试内容: 章节后的Review Terms(名词基本都在课文中) 考试题型: 综合题 Review Terms Database-management system (DBMS) :A collection of interrelated data and a …

信息检索 Information Retrieval

信息检索主要是查找与用户查询相关的文档。 给定:大型静态文档集合 和信息需求(基于关键字的查询) 任务:查找所有且仅与查询相关的文档 典型的 IR 系统: • 搜索一组摘要 • 搜索报纸文章 • 图书馆搜索 • 搜索网络 …

毕业后,我已经离开机械行业转行码农一年多了......

背景 鄙人本科毕业两年有余,机械工程专业,我已经离开机械行业转行码农一年多了。 如果有正在学习的,退学还是千万不要,不过能换专业就换专业,不能换就往机电一体化靠,加上自学编程,以后做嵌入…

计算机毕设Python+Vue野生动物保护资讯管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

STM32的ST-link调试下载

调试原理 STM32F-10X使用M3内核,该内核支持复杂的同i傲视操作,硬件调试模块允许在取指令(指令单步运行)或访问数据(数据断电时)使得内核停止。在内核停止时,内核状态都可被查询,完成…

范登堡(van den berg)CPT使用记录

前段时间的CPT外业所使用的设备是范登堡的井下式或者说交互式的静力触探仪(CPT),型号是WISON-APB,下面是官网提供的照片。根据官网的介绍,它的探测工具分为三种,分别50KN(3m)、100KN…

KVM部署操作-尚文网络xUP楠哥

~~全文共1250字,阅读需约5分钟。 进Q群11372462,领取专属报名福利! # 安装KVM先决条件 KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。 基于 Intel 处理器的…

Qt之使用CQU库快速开发统一风格界面

在使用Qt开发时,肯定是想让开发的项目界面统一风格;不希望每个界面都要程序员用代码去修饰美化以及进行事件处理等等,这样非常繁琐,容易出错而且没有格调;所以我就开发一个动态链接库,封装统一的风格界面、…

尚医通-前端Vue学习(九)

(1)vscode的安装及使用 (2)前端知识-ES6语法知识点 (3)Vue-入门 (4) Vue的生命周期 (5)Vue-Axios的使用 (6)ElemmentUI介绍 &…

Java项目:SpringBoot课程在线学习系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 采用SpringBootSpringMybatisThyeleaf实现的在线学习系统,一共2个角色:管理员与学生。 管理员角色功能: 登录…

Unreal Engine中的Actor:理解、生成与消亡

目录 谈谈Actor 生成(实例化)Acotr StaticClass/UClass:类模板/类的快照 Actor的生命周期 Actor的消亡 Destroy:标记删除 SetLifeSpan:设置存活时间 Destroyed:消亡Actor的通知 EndPlay&#xff1…

chatGPT对接微信

代码地址: https://github.com/jeffcail/go-wecaht-bot 喜欢的帅锅美女可以点个star哦😊 背景 玩一玩chatGPT。只因GPT你太美~~~ wechat SDK go get github.com/eatmoreapple/openwechat实现功能 自动通过好友申请用户私聊回…

我的转行之路

我一直想为自己没有继续从事编程,而转到铁路行业找一个合理的理由,来掩饰我的愚蠢。我日思夜想终于找到了更合理更有说服力的理由,十个字,目光的短浅,认知的缺乏。 那个时候,只被一毕业就能拿到不错的工资…

Python还有发展前景吗?现在该怎么去学习?

从2008年开始Python就突然火了起来,腾讯最近组织了一个大型Python技术交流峰会,由此可见Python现在已经到了我们不能想象的境界,一切的步伐都要跟着大公司走,腾讯这样级别的公司都这样重视Python技术,可见Python的发展…