day17 回话跟踪技术Cookie与Session

news2024/11/19 19:24:39

会话跟踪技术

问题:一次会话中的多次请求不会共享数据,不能显示.若通过传参数在路径上来解决该问题,不安全.

作用:解决HTTP无状态

http,cookie,session使用的区别

如果使用http中的request.setAttribute(),只能一次共享一个

若使用cookie,cookie存在浏览器中,每一次请求都会带上这个cookie

若使用session,里面的session存在服务器中,在这个会话中都能取到

cookie(客户端技术,里面携带的是属性,键值对)

1.cookie在服务端中创建

2.cookie从服务端 带到 浏览器

3.cookie最终存储在浏览器中

4.cookie共享数据的时间:再一次分文服务器资源时

5.cookie数据传递方向:浏览器–>服务器(cookie)–>浏览器(存入)–>服务器(获取cooKies)

cookie的基本使用

cookie特级别总结:

1.一个cookie只能在相同的域和路径下访问,有servlet访问jsp访问

2.只需要在访问的servlet中new一个cookie对象,必须使用addCookie响应给浏览器才能奏效

3.获取到cookie里面的之后可以使用setvalue修改值

1.服务器创建cooKie对象

Cookie cookie = new Cookie(String name, String value);
name:共享数据的名称(唯一)
value:要共享的数据

2.服务器响应cookie给浏览器

resp.addCookie(cookie)

3.服务器获取cookie

浏览器发送请求时,会自动将cookie发送到服务器,此时cookie中有很多键值对

可以通过遍历获得想要的cookie

**getname:**获取一个cookie的名字

**getvalue:**获取cookie中的数据

Cookie[] cookies = req.getCookies();

在servlet中获取cookie数据

此时需要将数据继续共享,下一个地方才可以获得该数据

Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
    if ("username".equals(cookie.getName())){
        System.out.println(cookie.getValue());
        //共享数据到下一个页面
        req.setAttribute("username",cookie.getValue());
        }
        }

在JSP中获取Cookie数据

使用El表达式

${cookie.username.value

修改cookie中的数据

需要调用cookie中的setValue方法

再重新创建同一个名称的cookie对象进行共享

Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
    if ("username".equals(cookie.getName())){
        System.out.println(cookie.getValue());
        //将服务器中的的cookie属性修改为muling
        cookie.setValue("muling");
        //将修改后的cookie对象重新响应给浏览器
        resp.addCookie(cookie);
    }
}

设置cookie的存活时间(以秒进行计算)

cookie默认的存活时间是当浏览器关闭的时候销毁

设置存活时间:cookie.setMaxAge(10)

立即删除当前cookie对象:cookie.setMaxAge(0)

cookie 的分类(在客户端中)

内存cookie:关闭浏览器消失

硬盘cookie:手工清理或到期

删除cookie

设置存活时间,一般是在中途删除cookie,要将删除后的cookie重新更新到浏览器

cookie.getMaxAge(0);
resp.addCookie(cookie);

cookie的域和路径的作用

让浏览器识别cookie并发送给服务器

域:识别服务器

路径:识别资源

cookie的应用场景

1.记录用户信息,解决HTTP无状态问题

2.登录时记住用户名

3.未登录实行购物车

cookie存在的问题

1.多个人使用同一台电脑不安全

2.tomcat8.5以下存中文麻烦\

3.一个cookie只能设一个值,String类型

4.服务器在客户端存的cookie数量有限

session(服务端技术,会话域)

1.在服务器创建

2.存在服务器

3.再一次访问服务器资源时实现数据共享

4.数据方向:浏览器–>服务器(session)–>数据在服务器

服务器识别不同用户session的方法

使用浏览器中cookie存储的sessionId来进行识别(使用会话cookie)

底层就是使用cookie传递session的id值

req

获取sesson

方法作用
req.getSession()判断是否存在session(浏览器是否携带了sessionId),有则获取,没有就重新创建

数据共享方法

方法作用
setAttribute(String name,Objiect value )设置属性名和属性值
getAttribute(String name)获取共享的属性值
removeAttribute(name)从session中删除该属性值
invalidate()删除整个session对象

在servlet中获取Session数据

req.getSession.getAttribute(session)

在jsp中获取session数据

使用el表达式进行数据的获取,"user_in_session"是共享的session 名称,这样session的命名更规范

${user_in_session}

session的超时管理

默认情况下session只在tomcat]保留30分钟,超过设定得时间,所有的session就会销毁

在service()中设置超时管理,在实现共享数据之前

局部修改

修改web.xml文件,添加超时管理标签,时间按照分钟计算

<session-config>
	<session-timeout>10</session-timeout>
</session-config>

局部修改

在创建servlet中的指定session下面添加超时管理,时间按秒计算

//使用session获取共享数据
HttpSession session = req.getSession();

//设置session超时时间,只要10秒钟之后还没有任何操作,此时销毁session,重新登录,在content页面操作的
session.setMaxInactiveInterval(10);
//仍然将数据共享出去
session.setAttribute("username",username);

servlet中的url重写

重写原因:用户故意禁用所有的cookie,session 就接收不到cookie所携带的sessionId

response.encodeURL("/session/list")

在jsp中url重写

${pageConttext.response.encodeURL("/session/list")}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrphyXdl-1684897254927)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230416162408442.png)]

重写url后,请求的url后面就会拼接jsessionId(可以自动检测是否开启cookie接收,未开启则自动拼接)

ionId

response.encodeURL("/session/list")

在jsp中url重写

${pageConttext.response.encodeURL("/session/list")}

重写url后,请求的url后面就会拼接jsessionId(可以自动检测是否开启cookie接收,未开启则自动拼接)

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

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

相关文章

JAVA——类间双向关联关系的实现-Contact与Phone类(电话簿管理系统)

首先&#xff1a;确定代码雏形框架&#xff08;原始代码&#xff09; 先根据以往经验写出一般的电话簿管理系统&#xff0c;先把代码雏形框架确定好。 原始代码运行结果&#xff1a; 原始代码源码&#xff1a; package bidirectionalDome;import java.util.ArrayList;public…

前端基础面试题八股文

html语义化的理解 代码结构: 使页面在没有css的情况下,也能够呈现出好的内容结构 有利于SEO: 爬虫根据标签来分配关键字的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息 方便其他设备解析&#xff1a; 如屏幕阅读器、盲人阅读器、移动设备等&#xff0c…

【敬伟ps教程】自由变换

文章目录 自由变换 自由变换 变换可以针对整个图层(组或链接图层)&#xff0c;或者选区内 基本操作 编辑–自由变换&#xff08;CtrilT&#xff09;&#xff1b; 自由变换的控件框来控制变换的效果&#xff1b; 自由变换是独立进行操作的模式&#xff0c;操作结束后需要点击确…

nginx -- 基本操作命令

修改nginx 配置&#xff0c;重新启动nginx流程,先进入到nginx目录 查看nginx状态 ps -ef | grep nginx 修改完/conf/nginx.conf 配置文件后保存 检查配置文件是否正确 ./sbin/nginx -t 检查文件配置正常 关闭nginx ./sbin/nginx -s quit 启动nginx ./sbin/nginx 完成

无线AP中小型、大型两种常见组网方式

无线AP&#xff08;Access Point&#xff09;网络覆盖是现代无线网络中的重要组成部分。它提供了无线信号的传输和接收功能&#xff0c;使用户能够在无线网络中进行通信和访问互联网。针对不同的需求和场景&#xff0c;存在两种常见的无线AP网络覆盖组网方式&#xff1a;中小型…

IMX6ULL平台的I2C

IMX6ULL平台的I2C 文章目录 IMX6ULL平台的I2C概述模式和操作 外部信号时钟功能描述I2C系统配置仲裁程序时钟同步信号交换外围总线访问复位中断字节顺序 初始化初始化序列启动的生成传输后软件响应停止的生成重复启动的生成从模式仲裁失败软件限制 I2C内存映射/寄存器定义I2C地址…

三维医学图像处理系统(PACS)源码

三维医学图像处理系统&#xff08;PACS&#xff09;源码 系统概述&#xff1a; 它集影像存储服务器、影像诊断工作站及RIS报告系统于一身,主要有图像处理模块、影像数据管理模块、RIS报告模块、光盘存档模块、DICOM通讯模块、胶片打印输出等模块组成&#xff0c; 具有完善的影…

opencv 裁剪图片方法详解

OpenCV 是一个用于计算机视觉和机器学习的开源库。它包含了很多图像处理的功能&#xff0c;包括裁剪图片。在 Python 中&#xff0c;我们可以使用 OpenCV 的 cv2 模块来实现图片的裁剪。 以下是使用 OpenCV 裁剪图片的详细步骤&#xff1a; 1. 导入所需的库&#xff1a; python…

python3.8,torch1.10.2+cu113、torch-geometric 安装

【1】conda create -n name python=3.8 【2】安装 torch 注意先看可适应的最高cuda版本 https://data.pyg.org/whl/ 版本对应 【3】按照顺序安装torch-geometric: torch-sparse、torch-scatter、torch-cluster、 torch-spline-conv \torch-geometric pip install torc…

详解c++新特性—c++11

目录 1、auto 1.1、解释 1.2、语法 1.3、注意事项 1.4、实例 1.5、auto和const的结合 1.6、auto的限制 1.7、auto的应用 2、decltype 2.1、解释 2.2、语法 2.3、注意事项 2.4、实例 2.5、decltype推导规则 2.6、decltype实际运用 3、返回值类型后置 3.1、解释…

怎么用手机拍照方式将车辆合格证转为excel表格?

将车辆合格证转为结构化的Excel文档是一项常见的需求&#xff0c;它可以让用户更方便快捷地对其中的数据进行查询和储存、管理。但当前支持这种需求的手机软件非常少&#xff0c;怎么办呢&#xff1f;用金鸣表格文字识别小程序&#xff0c;即可通过手机拍照&#xff0c;快速地实…

基于JavaSpringBoot+Vue+uniapp实现微信掌上图书小程序

最近开发了一个基于JavaSpringBootVueuniapp实现微信掌上图书小程序&#xff0c;系统非常的nice。 文章目录 1&#xff0c;系统技术简介1.1 Mysql数据库1.2SpringBoot框架 2&#xff0c;系统功能介绍2.1 系统前台功能2.2 系统后台管理2.3 流程图和结构功能图 3&#xff0c;系统…

HydroD 实用教程(八)频域水动力分析

目 录 一、前言二、前处理三、定义/提交作业3.1 创建分析作业3.2 定义分析工况3.3 配置分析选项3.4 设置输出文件3.5 提交求解计算 四、输出文件4.1 Hydrodynamic Results Interface File4.2 Loads Interface File4.3 Analysis Control Data File for Structural Analysis4.4 W…

导线舞动的防范措施

输电线路导线舞动在线监测装置 一、产品描述&#xff1a; 导线舞动幅度过大会导致铁塔等设施发生形变&#xff0c;严重的可能会发生铁塔坍塌&#xff0c;倒塔挂线&#xff0c;进而导致电力系统瘫痪&#xff0c;威胁到电力供应系统的稳定性&#xff0c;电力供应系统的稳定需要保…

SCSI介绍和SCSI命令承载于各类总线的方式

1. SCSI协议简介 小型计算机系统接口(SCSI&#xff0c;Small Computer System Interface&#xff09;是一种用于计算机及其周边设备之间&#xff08;硬盘、软驱、光驱、打印机、扫描仪等&#xff09;系统级接口的独立处理器标准。虽然名字里面带个接口&#xff0c;但实际上是一…

文本三剑客-Sed

sed工作原理 sed的特点&#xff1a; sed基本语法 模式空间中的编辑操作---地址定界 常用编辑命令 增添&#xff08;a&#xff09; 追加&#xff08;i&#xff09; 删除&#xff08;d&#xff09; 读入文件&#xff08;r&#xff09; 固定长度替换&#xff08;y&#xff0…

ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时之网络攻击新威胁

ChatGPT&#xff1a;你真的了解网络安全吗&#xff1f;浅谈网络安全攻击防御进行时 网络攻击新威胁1) 人工智能的应用2) 5G和物联网的崛起3) 云安全4) 社交工程的威胁 ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;美国…

Netlogo学习笔记

第一行&#xff1a;国际惯例咕咕咕。 第二行&#xff1a;人工势场这个概念好神奇&#xff08;虽然我觉得就是强行捏了一个高大上的词 第三行&#xff1a;希望全天下的软件都能把要用的东西集成成库&#xff0c;然后只需要无脑点点就可以了&#xff08;我本人&#xff1a;又懒…

day14 HTTPServlet

HTTP协议 含义&#xff1a;是TCP、IP协议之上的应用层协议 作用&#xff1a;规定浏览器和服务器数据之间的交互格式 注意&#xff1a;该协议的端口为80&#xff0c;Tomcat是8080 http的特点 1.无状态&#xff0c;无记忆 2.“1.0”版本需要多次请求和响应&#xff0c;1.1一…

CentOS 7 离线安装MySQL

MySQL下载官网&#xff1a; https://downloads.mysql.com/archives/community/ 文章使用的MySQL版本下载地址&#xff1a; https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz 一、卸载旧的mysql 1、删除MySQL的安装文件 [rootwww ~]# …