会话管理——Cookie

        会话管理在人机交互中扮演着至关重要的角色,它是指保持用户的整个会话活动的互动与计算机系统跟踪过程。以下是对会话管理的简单介绍:

会话主要分为两类:有状态会话(知道对方身份)和无状态会话(不知道对方身份)

浏览器HTTP请求本身为无状态的

无状态会话只是接收到了四个请求 。而有状态会话接收四个请求并且可以区分发送请求的对象。

那么如何实现有状态的会话呢? 

那么就需要会话管理中的cookie和session了

cookie:客户端技术,将状态保存在客户端

session: 服务端技术,将状态保存在服务端

 具体过程

cookie:服务器创建的通过响应发送给客户端并保存在浏览器上的一小段信息,浏览器在下次向服务器发送请求时,这段信息被携带并发送到服务器上。如图所示:

cookie可以既可以在后端设置也可以在前端设置。

 后端具体操作:现在我们建一个servlet,命名为SetServlet,在doGet函数中写入

        //服务端创建cookie 
		Cookie cookie=new Cookie("account", "admin");
		//Cookie cookie2=new Cookie("key", "qqqqq");
		//设置cookie有效期 单位为s
		//>0,表示有效期。=0,表示删除cookie。<0,表示会话cookie
		cookie.setMaxAge(60*60);
		//将cookie响应给客户端
		response.addCookie(cookie);

我们可以在网页中看到该cookie 

 前端具体操作:在HTML文件里,用javascript设置获取cookie:

                 document.cookie="变量名=变量值",这样

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
 
document.cookie="account=admin"
document.cookie="password=123456;"
document.cookie="key=value;max-age="+60*60

</script>
</head>
<body>

</body>
</html>

要获取某一项获取cookie

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">

function getCookie(key){
	
	var arr = document.cookie.split(";")
	//var arr = document.cookie.split("; ")也可以去空格
	for(var i=0;i<arr.length;i++){
		arr[i]=arr[i].trim()  //去空格
		if(arr[i].indexOf(key)==0){
			return arr[i].substring((key.length+1))
		}
	}
	console.log(arr)
	return ""
}

console.log(getCookie("password"))


</script>
</head>
<body>

</body>
</html>
  • split()将字符串分割为字符串数组
  • trim()去掉字符串前后的空格
  • indexOf() 判断有没有这个字符串,有返回匹配的第一个字符串的第一个位置。没有返回-1
  • indexOf(string,n) 表示跳过n个元素后去查找这个字符串
  • lastIndexOf() 判断有没有这个字符串,有返回匹配的最后一个的第一个位置。没有返回-1
  • subString(a,b)从a到b字符串裁剪

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go mod的使用

1. go中包的介绍和定义 包就是很多golang源码的集合&#xff0c;Go语言为我们提供了很多内置包&#xff0c;如fmt、strconv、strings、sort、errors、time、encoding/json、os、io等。 种类&#xff1a;1、系统内置包 2、自定义包 3、第三方包 系统内置包&…

计算机组成原理一句话

文章目录 计算机系统概述存储系统指令系统 计算机系统概述 指令和数据以同等地位存储在存储器中&#xff0c;形式上没有差别&#xff0c;但计算机应能区分他们。通过指令周期的不同阶段。 完整的计算机系统包括&#xff0c;1&#xff09;软件系统&#xff1a;程序、文档和数据&…

GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复

这两天测试GeeM2引擎的服务端&#xff0c;最常见的问题就是点击开始游戏出现白屏&#xff0c;最早还以为是服务端问题&#xff0c;结果是因为升级了引擎&#xff0c;而没有升级NewUI这份文件导致的。解决方法如下&#xff1a; 下载GEE引擎包最新版&#xff0c;&#xff08;可以…

C++实现精简实用的json解析库

fcjson.h #pragma once#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) #define _CRT_SECURE_NO_WARNINGS #endif#include <stdint.h> #include <string> #include <vector> #include <map>// VS 将执行字符集指定为…

Jupyter Notebook修改你的默认路径

Jupyter Notebook修改你的默认路径 看到网上一堆抄来抄去的博客&#xff0c;图片和文字都不对应&#xff0c;搞得配置得头昏脑涨的&#xff0c;所以写了这个。 1.打开 Anaconda Prompt 2.输入 jupyter notebook --generate-config&#xff0c;注意提示后输入N&#xff0c;因为…

【K8s】Kubernetes 证书管理工具 Cert-Manager

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

校招基础知识详解——计算机操作系统(内存管理)

文章目录 虚拟内存分页系统地址映射页面置换算法最佳页面置换算法(OPT, Optimal replacement algorithm)先进先出置换算法&#xff08;FIFO, First In First Out&#xff09;最近最久未使用的置换算法&#xff08;LRU, Least Recently Used&#xff09;最不常用算法最近未使用&…

Excel常用操作培训

1 Excel基本操作 1.1 常用快捷键 1.1.1快捷键操作工作簿、工作表 1.1.2快捷键操作 1.1.3单元格操作 1.1.4输入操作 2.1 常见功能描述 2.1.1 窗口功能栏 excel有很多功能可以用&#xff0c;新建文档后&#xff0c;可以最上方&#xff0c;可以看到所有的功能栏目 2.1.2 剪切板…

《YOLO目标检测》—— YOLO v2 详细介绍

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;未写完&#xff01;&#xff01;&#xff01;&#xff0…

Android中导入讯飞大模型ai智能系统

1.在讯飞大平台申请免费接口(申请后获取url和token) 2.创建一个数据库进行储存对话聊天记录 package com.example.myapplication.XL; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlit…

【SQL】SQL函数

&#x1f4e2; 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。 字符串函数数值函数日期函数流程函数 &#x1f384; 字符串函数 ⭐ 常用函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接&#xff0c;将S1&#xff0c;S2&#xff0…

Mongodb基础用法【总结】

关系型数据库和非关系型数据库的区别 关系型数据库 1.在关系型数据库中&#xff0c;数据都是存储在表中的&#xff0c;对存储的内容有严格的要求 2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则 3.由于操作的都是结构化的数据&#…

一款.NET开源的i茅台自动预约小助手

前言 今天大姚给大家分享一款.NET开源、基于WPF实现的i茅台APP接口自动化每日自动预约&#xff08;抢茅台&#xff09;小助手&#xff1a;HyggeImaotai。 项目介绍 该项目通过接口自动化模拟i茅台APP实现每日自动预约茅台酒的功能&#xff0c;软件会在指定时间开始对管理的用…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段&#xff0c;制作动态编辑体积纹理的模块。 但在这之前&#xff0c;要在这一章做最后一些整理。 首先&#xff0c;我们完成没完成的部分。其次&#xff0c;最后整理一下图表。最后&#xff0c;本文附上正在用的贴图 完善Shader 还记得我们之前注…

HBuilder X 中Vue.js基础使用1(三)

一、 模板语法 Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML&#xff0c;可以被符合规范的浏览器和 HTML 解析器解析。 英文官网: Vue.js - The Progressive JavaScript Fr…

浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系

前言 在OpenStack平台上&#xff0c;采用bcache加速ceph分布式存储的方案被广泛用于企业和云环境。一方面&#xff0c;Ceph作为分布式存储系统&#xff0c;与虚拟机存储卷紧密结合&#xff0c;可以提供高可用和高性能的存储服务。另一方面&#xff0c;bcache作为混合存储方案&…

Turn-it:优化线材重构雕塑制造

&#x1f428;文章摘要abstract 电线雕塑在工业应用和日常生活中都很重要。 本文提出了一种新的制造策略&#xff0c;通过调整目标形状以适应电线弯曲机&#xff0c;然后由人工将其弯曲回目标形状。&#xff08;机器弯曲人工弯曲&#xff09; 该方法通过两阶段弯曲策略实现&a…

力扣——用队列实现栈(C语言)

目录 题目&#xff1a; 原理&#xff1a; 结构体MyStack 出栈void myStackPop(MyStack* obj) 入栈void myStackPush(MyStack* obj, int x) 读取栈顶元素int myStackTop(MyStack* obj) 判断栈空bool myStackEmpty(MyStack* obj) 销毁栈void myStackFree(MyStack* obj) 整…

NewStar CTF 2024 Week1,Week2部分

WP部分学习官方解题思路&#xff0c;这次比赛还是收获满满呀 web方向&#xff1a; headach3 抓包拿到flag 会赢吗 第一关&#xff1a; 查看源码看到flag第一部分和目录 第二关&#xff1a; 查看js文件 revealflag方法传入了一个className参数 <script>async func…

8.three.js相机详解

8.three.js相机详解 1、 认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera&#xff1a; 正投影和透视投影的区别是&am…