会话与会话技术(Cookie)

news2024/11/18 22:37:34

Web应用中的会话过程指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程

为保存会话过程产生的数据,Servlet提供了两个用于保存会话数据的对象,分别是CookieSession

1、Cookie对象

Cookie是一种会话技术,它可以将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好的进行数据交互

1.1 Cookie概述

在Web应用中,Cookie的功能类似于会员卡。即当用户访问Web服务器时,Web服务器会给用户发送一些信息(例如用户信息和商品信息),然后这些信息会保存在Cookie中。当浏览器再次访问服务器时,会在请求头中将Cookie发送给服务器,以便服务器来做出正确的响应

服务器向客户端发送Cookie时,会在HTTP响应头中增加Set-Cookie响应头字段。Set-Cookie响应头字段中设置Cookie的具体示例为:

Set-Cookie:user=itcast;Path=/;

参数:user表示Cookie的名称,itcast表示Cookie的值,Path表示Cookie的属性

Cookie必须以键值对的形式存在,会在Cookie属性可以有多个,属性之间用分号“ ; ”和空格分隔

客户端和服务器之间的传输过程大致如下:

 1.2 Cookie API

为了封装Cookie信息,Servlet API提供了javax.servlet.http.Cookie类,该类包含了生成Cookie信息和提取Cookie信息的方法

Cookie类的构造方法

public Cookie(java.lang.String name,java.lang.String value);

参数:name用于指定Cookie的名称,value用于指定Cookie的值

注意:Cookie在创建之后,名称不可更改,但值可以在创建之后更改

Cookie类的常用方法

1、String getName()

功能:返回Cookie的名称

2、void setValue(String newValue)

功能:为Cookie设置一个新的值

3、String getValue()

功能:返回Cookie的值

4、void setMaxAge(int expiry)

功能:用于设置Cookie在浏览器客户机上保持有效的秒数

5、int getMaxAge()

功能:用于返回Cookie在浏览器客户机上保持有效的秒数

6、void setPath(String uri)

功能:用于设置该Cookie项的有效目录路径

7、void getPath()

功能:用于返回该Cookie项的有效目录路径

8、 void setDomain(String name)

功能:用于设置该Cookie项的有效域

9、String getDomain()

功能:用于返回该Cookie项的有效域

10、void setVersion(int v)

功能:用于设置该Cookie项采用的版本协议

11、int getVersion()

功能:用于返回该Cookie项采用的版本协议

12、void setComment(String purpose)

功能:用于设置该Cookie项的注解部分

13、String getComment()

功能:用于返回该Cookie项的注解部分

14、void setSecure(boolean flag)

功能:用于设置该Cookie项是否只能使用安全的协议传送

15、boolean getSecure()

功能:用于返回该Cookie项是否只能使用安全的协议传送

1、setMaxAge(int expiry)和getMaxAge()

它们用于设置和返回Cookie在浏览器上保持的有效秒数。如果设置的秒数为正整数,则浏览器会将Cookie信息保存在本地硬盘中,从当前时间开始,在没有超过指定的秒数之前,这个Cookie都会保持有效并且同一台计算机上运行的该浏览器都可以使用这个Cookie信息;如果设置的秒数为负整数,则浏览器会将Cookie信息保存在浏览器的缓存中,当浏览器关闭则Cookie会被删除;如果设置的值为0,则浏览器会立刻删除这个Cookie信息

2、setPath(String uri)和getPath()

它们是针对Cookie的Path属性。如果创建的某个Cookie对象没有设置Path属性,那么该Cookie只对当前访问路径所属的目录及其子目录有效。如果想让某个Cookie项对站点的所有目录下的访问路径都有效,应调用Cookie对象的setPath()方法将其Path属性设置为“/”

3、setDomain(String name)和getDomain()

它们是针对Cookie的domain属性,domain属性用于指定浏览器访问的域,设置domain的值必须以 “ . ” 开头。在默认情况下,domain属性的值为当前主机名,浏览器在访问当前主机下的资源时,都会将Cookie信息发送给服务器(主机)

例:传智播客的域为“itcast.cn”,则domain的值为domain=.itcast.cn

注意:domain属性的值不区分大小写

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

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

相关文章

SS524V100 RTL8152B(USB转网卡)驱动移植

目录 前言 1. 内核下 USB Host 配置过程 2. 内核下 RTL8152 驱动配置 3. 重新编译内核 4. 测试USB转网卡 5. 总结 前言 本文主要是描述 SS524V100 对 RTL8152B(百兆网卡) 开发、移植的过程。 1. SS524V100 的 USB 2.0 支持 Host 模式; 2. 内核默认自带驱动…

0环境教你怎么安装配置GPU环境运行车流量检测代码

项目效果: python车流量检测双向车流计数 1、环境配置 1.1 安装显卡加速工具 (1) 安装CUDA和cudnn NVIDIA CUDA 深度神经网络库 (cuDNN) 是经 GPU 加速的深度神经网络基元库。cuDNN 可大幅优化标准例程(例如用于前向传播和反向传播的卷积层、池化层、…

4月23日作业

#include <iostream> #include <cstring> using namespace std; class Student //学生类 { private: string name; //姓名 int year; //年龄 double sorce; //分数 public: Student (){} //无参构造 Student(string a,int b,double c):name(a),y…

五分钟学会在微信小程序中使用 vantUI 组件库

前言 我们在开发微信小程序时&#xff0c;设计和实现好用的用户界面无疑是至关重要的一步。但是微信小程序官方自带的 UI 组件库无法满足很多使用场景&#xff0c;这个时候就需要我们使用一些第三方的 UI 组件库。而 vant Weapp 作为一款优秀的前端 UI 组件库&#xff0c;可以帮…

MP长篇综述 | 植物泛基因组及其应用

2022年12月15日&#xff0c;中山大学史俊鹏副教授、中国科学院遗传与发育生物学研究所田志喜研究员、中国农业大学赖锦盛教授和上海师范大学黄学辉教授共同撰文&#xff0c;在Molecular Plant杂志发表了题为“Plant pan-genomics and its applications”的长篇综述。该论文对植…

(Ubuntu22.04 Jammy)安装ROS2 Humble

文章目录 (Ubuntu22.04 Jammy)安装ROS2 (Humble)版本一、设置本地区域二、设置源三、安装ROS2软件包四、环境设置五、测试用例Talker-listener 六、卸载ros2 (Ubuntu22.04 Jammy)安装ROS2 (Humble)版本 提示&#xff1a;以下内容是已经安装了ubuntu22.04 下进行安装ros2 一、设…

iptables防火墙和Firewalld

引言 在 Internet 中&#xff0c;企业通过各种应用系统来为用户提供各种服务&#xff0c;如 Web 网站、电子邮件系统、FTP 服务器、数据库系统等&#xff0c;那么&#xff0c;如何来保护这些服务器&#xff0c;过滤企业不需要的访问甚至是恶意的入侵呢&#xff0c;接下来&#…

设计模式--建造者模式

项目需求 盖房需求 (1) 需要建房子:过程为 打地基 砌墙 封顶 (2) 房子有高正各样的,比如 平房和高楼 建房子的过程虽然都一样 但是要求不要相同的细节 传统方式 public abstract class TraditionBuild {//打地基public abstract void foundation();//砌墙public abstract voi…

Linux进程的fork、exit、wait等函数;区分父子进程;GDB调试多进程

Linux系统中进程可以创建子进程。 1. fork函数&#xff1a;创建新进程 #include<sys/types.h> #include<unistd.h>pid_t fork(void); /* 功能&#xff1a;一个进程创建新进程。原进程为父进程&#xff0c;新进程为子进程。 返回值&#xff1a;成功&#xff1a;子…

SuperMap iObjects Docker打包全攻略

SuperMap iObjects Docker打包全攻略 文章目录 SuperMap iObjects Docker打包全攻略说明开始打包iObjects容器启动容器参考 说明 此教程编写时使用的iObjects版本为 10.2.1 &#xff0c;理论高版本同样支持&#xff0c;具体自测。基础镜像为 Docker 官方 ubuntu:16.04完整版。…

C++ 类和对象(中)构造函数 和 析构函数

上篇链接&#xff1a;C 类和对象&#xff08;上&#xff09;_chihiro1122的博客-CSDN博客 类的6个默认成员函数 我们在C当中&#xff0c;在写一些函数的时候&#xff0c;比如在栈的例子&#xff1a; 如上述例子&#xff0c;用C 返回这个栈是否为空&#xff0c;直接返回的话&am…

基于OpenCV-python的图像增强和滤波

目录 彩色空间 直方图均衡化 图像滤波 梯度 一、彩色空间 OpenCV 的颜色空间主要有 BGR、HSV、Lab等&#xff0c;cvtColor 函数可以让图像在不同颜色空间转换。例如通过将花的图像转换到 HSV 颜色空间&#xff0c;在HSV空间内过滤出只含有花瓣颜色的像素&#xff0c;从而提…

公共资源包发布流程详解

文章目录 公有包发布并使用npm安装git仓库协议创建及使用 npm 私有包创建及使用 group npm 私有包私有仓账密存放位置 当公司各个系统都需要使用特定的业务模块时&#xff0c;这时候将代码抽离&#xff0c;发布到 npm 上&#xff0c;供下载安装使用&#xff0c;是个比较好的方案…

SQL Server基础 第七章 连接查询(内连接、表别名、左外连接、右外连接)

前言 连接查询是关系数据库中最主要的查询&#xff0c;主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。前面章节的查询均是基于单表进行&#xff0c;但有时需要获取的信息存储于多张表中&#xff0c;此时就必须使用本章所介绍的多表连接查询技术来获取…

关于debug一晚上的一些思考,做开发到底要养成什么习惯?

总结&#xff1a;日志一定要写&#xff0c;日志一定要写&#xff0c;日志一定要写&#xff01; 今天晚上是我学开发过程中很不一样的一晚&#xff0c;今晚学到了很多。 虽然我也只是一个开发的初学小白&#xff0c;今天的debug分享是我的一个小方法和一个小记录&#xff0c;如…

第四章——数学知识2

欧拉函数 欧拉函数表示的是1-n中与n互质数的个数。 如1-6中&#xff1a;1&#xff0c;5都和6互质&#xff0c;因此互质数为2 欧拉函数分解质因数后表示为&#xff1a; 互质数个数可表示为 int main() {int n;cin >> n;while(n--){int a;cin >> a;//分解质因数int r…

TypeScript自学笔记

目录 1.什么是Ts? 1.1 设计公司&#xff1a;微软 1.2 TS概述 1.3 TS是静态类型 JS是动态类型 1.4 TS是强类型语言 JS是弱类型语言 2.TypeScript编译器 2.1 安装 2.2 TS自动编译和编译选项设置 3.TS的数据类型 3.1 基础数据类型number、string、boolean 3.2 Arrays&a…

大数据架构(二)大数据发展史

1.传统数仓发展史 传统数据仓库的发展史这里不展开架构细讲&#xff0c;只需快速过一遍即可。了解这个历史发展过程即可。 1.1 传统数仓历史 1.1.1 5个时代 传统数仓发展史可以称为5个时代的经典论证战。按照两位数据仓库大师 Ralph kilmball、Bill Innmon 在数据仓库建设理念上…

吃透Redis面试八股文

Redis连环40问&#xff0c;绝对够全&#xff01; Redis是什么&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一个使用 C 语言编写的&#xff0c;高性能非关系型的键值对数据库。与传统数据库不同的是&#xff0c;Redis 的数据是存在内存中的&#xf…

Python Review 01

1、Anaconda Installation 使用Anaconda Navigator进行python环境管理&#xff0c;使用conda进行依赖管理。 2、Use of Jupyter 将代码写入一个个cell&#xff0c;代码文件由一个个cell组成&#xff0c;书写代码时就像一行一行在写笔记&#xff0c;这就是notebook的代码编辑环…