Cookie及Session

《Session/Cookie 封神教程!3张图 + 可运行代码,讲透会话技术(原理 + 实战 + 避坑)》 《Session/Cookie 封神教程!三张图 + 可运行代码,讲透会话技术(原理 + 实战 + 避坑)》 阅读详情

一 会话技术

1、会话

  • 一次会话中包含多次请求和响应
  • 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止

2、功能

  • 在一次会话的范围内的多次请求间,共享数据

3、方式

  • 客户端会话技术:Cookie
  • 服务器会话技术:Session

Cookie

1、概念

  • 客户端会话技术,将数据保存到客户端

2、快速入门

  • 使用步骤
  • 1 创建Cookie对象,绑定数据
new Cookie(String name, String value)
  • 2 发送Cookie对象
response.addCookie(Cookie cookie)
  • 3 获取Cookie,拿到数据
Cookie[] request.getCookies()

3、实现原理

  • 基于响应头set-cookie和请求头cookie实现

4、cookie的细节

1、一次可不可以发送多个cookie?

  • 可以
  • 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可

2、cookie在浏览器中保存多长时间?

  • 1 默认情况下,当浏览器关闭后,Cookie数据被销毁
  • 2 持久化存储
    • setMaxAge(int seconds)
  • 正数:将Cookie数据写到硬盘的文件中。持久化存储,并指定cookie存活时间,时间到后,cookie文件自动失效
  • 负数:默认值
  • 零:删除cookie信息

3、cookie能不能存中文?

  • 在tomcat 8之前 cookie中不能直接存储中文数据,需要将中文数据转码——一般采用URL编码
  • 在tomcat 8之后,cookie支持中文数据。不支持特殊字符,建议使用URL编码存储,URL解码解析

4、cookie共享问题?

    1. 假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中cookie能不能共享?
      * 默认情况下cookie不能共享

         * setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录
         	* 如果要共享,则可以将path设置为"/"
      
    1. 不同的tomcat服务器间cookie共享问题?
      * setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
      * setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

5、cookie的特点及作用

  1. cookie存储数据在客户端浏览器

  2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)

    • 作用:
      1. cookie一般用于存出少量的不太敏感的数据
      2. 在不登录的情况下,完成服务器对客户端的身份识别

6. 案例:记住上一次访问时间

1. 需求:
	1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
	2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串

2. 分析:
	1. 可以采用Cookie来完成
	2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
		1. 有:不是第一次访问
			1. 响应数据:欢迎回来,您上次访问时间为:2019年4月10日11:50:20
			2. 写回Cookie:lastTime=2019年4月10日11:50:01
		2. 没有:是第一次访问
			1. 响应数据:您好,欢迎您首次访问
			2. 写回Cookie:lastTime=2019年4月10日11:50:01
  3. 代码实现
import javax.servlet.ServletException;
		import javax.servlet.annotation.WebServlet;
		import javax.servlet.http.Cookie;
		import javax.servlet.http.HttpServlet;
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		import java.io.IOException;
		import java.net.URLDecoder;
		import java.net.URLEncoder;
		import java.text.SimpleDateFormat;
		import java.util.Date;
		public class CookieTest extends HttpServlet {
	    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	        //设置响应的消息体的数据格式以及编码
	        response.setContentType("text/html;charset=utf-8");
	
	        //1.获取所有Cookie
	        Cookie[] cookies = request.getCookies();
	        boolean flag = false;//没有cookie为lastTime
	        //2.遍历cookie数组
	        if(cookies != null && cookies.length > 0){
	            for (Cookie cookie : cookies) {
	                //3.获取cookie的名称
	                String name = cookie.getName();
	                //4.判断名称是否是:lastTime
	                if("lastTime".equals(name)){
	                    //有该Cookie,不是第一次访问
	
	                    flag = true;//有lastTime的cookie
	
	                    //设置Cookie的value
	                    //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
	                    Date date  = new Date();
	                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
	                    String str_date = sdf.format(date);
	                    System.out.println("编码前:"+str_date);
	                    //URL编码
	                    str_date = URLEncoder.encode(str_date,"utf-8");
	                    System.out.println("编码后:"+str_date);
	                    cookie.setValue(str_date);
	                    //设置cookie的存活时间
	                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
	                    response.addCookie(cookie);
	                      //响应数据
	                    //获取Cookie的value,时间
	                    String value = cookie.getValue();
	                    System.out.println("解码前:"+value);
	                    //URL解码:
	                    value = URLDecoder.decode(value,"utf-8");
	                    System.out.println("解码后:"+value);
	                    response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>");
	
	                    break;
	
	                }
	            }
	        }
	        if(cookies == null || cookies.length == 0 || flag == false){
	            //没有,第一次访问
	
	            //设置Cookie的value
	            //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
	            Date date  = new Date();
	            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
	            String str_date = sdf.format(date);
	            System.out.println("编码前:"+str_date);
	            //URL编码
	            str_date = URLEncoder.encode(str_date,"utf-8");
	            System.out.println("编码后:"+str_date);
	
	            Cookie cookie = new Cookie("lastTime",str_date);
	            //设置cookie的存活时间
	            cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
	            response.addCookie(cookie);
	
	            response.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
	        }
	         }
	
	    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	        this.doPost(request, response);
	    }
	}

Session

  1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

  2. 快速入门:

    1. 获取HttpSession对象:
      HttpSession session = request.getSession();
    2. 使用HttpSession对象:
      Object getAttribute(String name)
      void setAttribute(String name, Object value)
      void removeAttribute(String name)
  3. 原理

    • Session的实现是依赖于Cookie的。
  4. 细节:

    1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

      • 默认情况下。不是。
      • 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
        Cookie c = new Cookie(“JSESSIONID”,session.getId());
        c.setMaxAge(60*60);
        response.addCookie©;
    2. 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

      • 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作
        • session的钝化:
          • 在服务器正常关闭之前,将session对象系列化到硬盘上
        • session的活化:
          • 在服务器启动后,将session文件转化为内存中的session对象即可。
    3. session什么时候被销毁?

      1. 服务器关闭
      2. session对象调用invalidate() 。
      3. session默认失效时间 30分钟
        选择性配置修改

        30
  5. session的特点

    1. session用于存储一次会话的多次请求的数据,存在服务器端
    2. session可以存储任意类型,任意大小的数据
    • session与Cookie的区别:
      1. session存储数据在服务器端,Cookie在客户端
      2. session没有数据大小限制,Cookie有
      3. session数据安全,Cookie相对于不安全
PHP中cookie与session详解 文章目录1.cookieCookie 是什么?如何创建 Cookie?语法实例 1实例 2如何取回 Cookie 的值?如何删除 Cookie?2.session开始 PHP Session存储 Session 变量销毁 Session 1.cookie Cookie 是什么? cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 如何创建 Cookie 阅读详情

相关推荐

session和cookie

session和cookie详解

SYWL的博客 1057

会话技术(Cookie和Session)

会话技术(Cookie和Session)

weixin_62190119的博客 3293

python爬虫豆瓣读书top250+数据清洗+数据库+Java后端开发+Echarts数据可视化(二)

之前的博客已经写了python爬取豆瓣读书top250的相关信息,接下来继续看如何清洗数据。 如果有没看懂的或是不了解上一部分说的是什么内容的,请看https://blog.youkuaiyun.com/qq_45804925/article/details/112848887 现在开始具体内容的复习: 1. 豆瓣读书top250信息预处理 #数据清洗 import pandas as pd import re import time # 先读取数据文件 data = pd.read_csv('E:/Class/商.

qq_45804925的博客 4442

会话技术------Cookie、Session、Token(JWT)详解

Cookie是一种在客户端(通常是Web浏览器)和服务器之间传输的小型文本文件。它由服务器通过HTTP响应的头部设置,并存储在客户端的浏览器中。当客户端发送后续请求时,会将该Cookie信息包含在HTTP请求头中发送给服务器。Session是一种在Web应用程序中跨请求保持用户状态的机制。Session是一段服务器上的存储区域,用于存储用户信息和状态。当用户第一次访问Web应用程序时,服务器会创建一个Session,并给它分配一个唯一的标识符(session ID),然后将该标识符发送给客户端。

m0_74229735的博客 5260

基于角谱传播的MATLAB仿真:从相位恢复看自由空间光传播

本文详细介绍了基于角谱传播理论的MATLAB仿真方法,用于模拟自由空间光传播过程。通过傅里叶光学原理,将光场分解为频谱并应用传播相位滤波器,实现了从纯相位物体到可观测衍射图样的仿真。文章结合具体代码,演示了如何利用角谱法进行相位恢复,为计算成像和生物医学检测等领域的研究提供了实用的仿真工具和思路。

weixin_29055699的博客 282

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

A2L文件的生成分为两章讲解:本文主要是讲模型开发,讲解如何把标定量、观测量放到链接文件中的指定位置。下一篇讲解如何使用matlab生成完整的A2L文件

认真搞搞汽车MCU 4618

会话技术

一、会话技术的概述 1、会话技术: 是一种维护同一个浏览器与服务器之间多次请求数据状态的技术,它可以很容易地实现对用户登录的支持,记录该用户的行为,并根据授权级别和个人喜好显示相应的内容。 2、PHP中最常用的两种会话技术 Cookie指的是一种在浏览器端存储数据并以此来跟踪和识别用户的机制 Session指的是将信息存放在服务器端的会话技术 二、Cookie简介 ●在Web应用程序中,Cooki...

weixin_44739304的博客 781

SillyTavern 酒馆在 Mac 和 Linux 上的部署教程(含启动器安装方法)

SillyTavern 是一个支持多种大模型聊天接口的本地前端项目,适用于 MacOS 和 Linux 系统。本文提供了两种部署方式:手动安装和使用 SillyTavern Launcher 安装器。手动安装需要先安装 Git 和 NodeJS,然后克隆项目源码并运行启动脚本。使用 Launcher 则更为简便,适合新手用户,能够自动安装依赖和配置环境。部署完成后,用户可以通过浏览器访问本地服务器,加载角色卡片并连接大模型 API,享受二次元角色扮演聊天的乐趣。无论是开发者还是终端用户,都能轻松完成 Sil

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3394

会话技术(Session)

会话技术(Session) 什么是会话? 会话:生活中 一次谈话 一次交谈 会话是浏览器和服务器之间的多次请求和响应 为了实现某一个功能(比如买东西),浏览器和服务器之间可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止,这期间产生的多次请求和响应加在一起就称之为浏览器和服务器之间的一次会话 web中的会话:指的是 浏览器与服务器建立的一次连接 这次连接 就称之为一次会话 在这次会话中 可以包含多次请求与多次响应 并且可以在多次请求和响应间进行数据共享 会话技术 解决

cx9977的博客 3265

RDKit | 基于Pytorch和RDKit建立QSAR模型

QSAR 定量构效方法(quantitative structure-activity relationship, QSAR)是应用最为广泛的药物设计方法。所谓定量构效方法就是通过一些数理统计方法建立其一系列化合物的生理活性或某种性质与其物理化学性质之间的定量关系,通过这些定量关系。可以预测化合物的生理活性或某些性质,指导我们设计出具有更高活性的化合物。 早在...

DrugOne 5078

冷门但实用:Python爬取微信公众号历史文章,突破微信反爬限制(2025有效)

2025年微信公众号爬取的核心是「冷门方法+指纹伪装」,而非常规接口破解,itchat-uos+Playwright组合是突破设备指纹的关键;登录态持久化、动态Token实时获取、频率严格控制是避免被封禁的三大核心;文章内容解析需解决2025新增的编码混淆问题,chardet+BeautifulSoup是冷门但有效的方案;合规是前提,爬取频率、数据用途需严格遵守平台/法律规则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3778

什么是session?什么是cookie?session和cookie有什么区别?

这里是修真院前端小课堂,本篇分析的主题是 【什么是session?什么是cookie?session和cookie有什么区别?】 每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/技能,本篇分享的是: 【什么是session?什么是cookie?session和cookie有什么区别?】 什么...

IT修真院:初学者转行到互联网的聚集地 3万+

1、2022 应用密码学与网络安全会议亮点与关键技术解读

2022年应用密码学与网络安全会议(ACNS 2022)在意大利罗马成功举办,会议涵盖了密码学与网络安全的多个前沿领域,包括键控全同态加密、隐私保护技术、区块链、后量子密码学和多方计算等。会议共收录44篇论文,展示了众多创新的研究成果,为学术研究和实际应用提供了新的思路和方法。本次会议促进了学术界和工业界的交流与合作,推动了密码学与网络安全行业的发展。

blue的专栏 182

Django-cookie,session

Session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而且在整个用户会话中一直存在下去。(session是依赖于cookie的)Django框架中的session管理允许存储和检索任意数据,它在服务器端存储数据并抽象cookie的发送和接收。

weixin_65791897的博客 1597

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 98

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Cookie和Session

登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户再次发送请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户的状态。服务器同⼀时刻收到的请求是很多的. 服务器需要清楚的区分每个请求是从属于哪个⽤⼾, 也就是属于 哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系。(1)Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制.

WHabc2002的博客 1042

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Cookie 和 Session

Cookie 直接翻译称为:曲奇饼。但是在网络上可与这种 小甜饼干 没有半毛钱关系~~ Cookie 中存储了一个字符串,这个数据可能是客户端(网页)自行通过 JS 写入的,也可能来自于服务器( 服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据 )

m0_64247824的博客 1601

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

session、cookie和token

特性CookieSessionJWT存储位置客户端(浏览器)服务器端客户端(通常存储在浏览器的localStorage、sessionStorage或cookie中)数据类型主要为字符串(可序列化复杂对象)任意数据类型JSON格式,包含Header、Payload和Signature大小限制一般不超过4KB(不同浏览器可能有所不同)无明显限制,但受服务器内存和配置影响取决于编码后的长度,但通常较小生命周期可设置过期时间,默认为浏览器关闭时失效。

m0_69777632的博客 1817

Cookie & Session

使用相对路径来解决, 一个非常重要的规则:页面所有的相对路径,在默认情况下,都会参考当前浏览器地址栏的路径 http://ip:port/工程名/ + 资源来进行跳转。

我的博客 1583

cookie与session

🗡🗡🗡在访问子路径时,会包含其父路径的Cookie,而在访问父路径时,不包含子路径的Cookie。

m0_68231291的博客 1344

【JavaWeb】Cookie、Session

解决方案:手动创建 name=JESSIONID 的 Cookie,替代 Tomcat 自动创建的 Cookie,并设置存活时间。如果希望Cookie可以在多个会话中共享数据(浏览器多次打开关闭),需要设置。由于 Session 是基于 Cookie 实现的,如果记录了。Cookie 产生于服务端(服务器),保存在客户端(浏览器)。的 Cookie 被销毁,Session 也会失效。服务器响应时,发送Cookie给浏览器(通过。浏览器访问时,携带Cookie到服务器(通过。创建 Cookie,添加到。

scj1022的博客 1344

cookie 和session关系

cookie 和session关系 **cookie:**有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密) 基于 Internet的各种服务系统应运而生,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息 目前公认的是,通过 Cookie 和 Session 技术来实现记录访问者的一些基本信息 Token :也称作令牌。是在服务端产生的,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务

weixin_42914706的博客 1318

cookie和session

本文介绍了HTTP协议的无状态特性及状态管理技术Cookie和Session的实现机制。Cookie通过在客户端存储会话信息实现状态保持,Session则是在服务端存储会话数据,并对比了两种技术的存储位置和实现方式。

2401_84284464的博客 1278

cookie和session的区别和联系

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。 4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个...

Loser的博客 2030
上一篇: JSP及EL、JSTL标签
下一篇: JDBC
superfloat
博客等级 码龄10年 7粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值