⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:Java Web

目录

  • 1、会话跟踪技术概述
  • 2、数据共享
  • 3、Cookie
  • 4、Session
  • 5、Cookie和Session的区别
  • 6、总结

1、会话跟踪技术概述

  会话跟踪是一种网络应用程序中常用的技术,用于追踪单个用户的交互。
它允许应用程序在多个页面之间共享用户状态,并为每个用户提供个性化体验。
  会话跟踪可以通过多种方式实现,包括使用 cookie、URL 重写和隐藏表单域:

  1. Cookie:Cookie 是一种小型文本文件,由服务器发送到客户端浏览器,并存储在用户计算机上。当用户访问应用程序时,服务器会读取存储在 Cookie 中的信息,并根据这些信息来维护会话状态。Cookie 可以包含唯一标识符、过期时间和其他与会话相关的数据。
  2. URL 重写:URL 重写是一种在每个页面上将会话 ID 作为查询字符串参数添加到 URL 中的技术。服务器可以使用查询字符串参数来标识用户会话,并维护会话状态。URL 重写对于无法使用 cookie 的情况非常有用,例如,当用户禁用了 cookie 或者使用了不支持 cookie 的设备时。
  3. 隐藏表单域:隐藏表单域是一种在每个页面上将会话 ID 作为隐藏表单元素添加到 HTML 表单中的技术。当用户提交表单时,服务器可以使用隐藏表单域中的会话 ID 来标识用户,并维护会话状态。隐藏表单域对于处理敏感信息的应用程序非常有用,因为它可以防止会话 ID 在 URL 或 Cookie 中被泄露。

  无论使用哪种技术,会话跟踪都需要在服务器端存储会话状态。
  通常,服务器使用一个键值对存储会话状态,其中键是会话 ID,值是与会话相关的数据。会话数据可以包括用户 ID、购物车内容、最近访问的页面等。
  需要注意的是,会话跟踪可能存在一些安全问题,例如会话劫持和跨站脚本攻击(XSS)。为了保护应用程序免受这些攻击,需要使用安全的会话跟踪技术,例如使用随机生成的会话 ID、在会话 ID 上使用加密或签名,以及在输出会话数据时进行适当的转义和过滤。
  
拆分理解会话跟踪技术:
什么是会话:
  在计算机网络中,会话(Session)是指两个或多个设备之间的一段通信时间。它是指从设备之间建立连接开始,到连接关闭结束的一段时间内,这些设备之间的所有通信活动。
  在Web应用程序中,会话通常指的是一段时间内用户与Web服务器之间的通信,通常包括用户在网站上访问的所有页面、表单提交、HTTP请求和响应等操作。会话可以是一个单独的请求-响应事务,也可以是多个请求和响应事务的集合。
  
简单来说:会话就是,当用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。
● 从浏览器发出请求到服务端响应数据给前端之后,一次会话(在浏览器和服务器之间)就被建立了
● 会话被建立后,如果浏览器或服务端都没有被关闭,则会话就会持续建立着
● 浏览器和服务器就可以继续使用该会话进行请求发送和响应,上述的整个过程就被称之为会话
如下图,则建立了三个会话:

  每个浏览器都会与服务端建立了一个会话,加起来总共是3个会话
  
  会话跟踪,简单来说就是一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
● 服务器会收到多个请求,这多个请求可能来自多个浏览器,如上图中的6个请求来自3个浏览器
● 服务器需要用来识别请求是否来自同一个浏览器
● 服务器用来识别浏览器的过程,这个过程就是会话跟踪
● 服务器识别浏览器后就可以在同一个会话中多次请求之间来共享数据

2、数据共享

  通过对会话跟踪技术的概述中,可以发现,浏览器和服务器之间是不支持数据共享的,为什么?

原因如下:

  1. 浏览器和服务器之间使用的是HTTP请求来进行数据传输
  2. HTTP协议是无状态的,每次浏览器向服务器请求时,服务器会将该请求视为新的请求
  3. HTTP协议设计成无状态的目的是让每次请求之间相互独立,互不影响
  4. 请求与请求之间独立后,就无法实现多次请求之间的数据共享

如何实现会话跟踪技术:

  1. 客户端会话跟踪技术:Cookie
  2. 服务端会话跟踪技术:Session

这两个技术实现会话跟踪的最大区别在于,Cookie是存储在浏览器端,而Session是存储在服务器端

3、Cookie

这部分内容,请移步我的另一篇文章:
[Java Web]Cookie | 一文详细介绍会话跟踪技术中的Cookie

4、Session

这部分内容,请移步我的另一篇文章:
[Java Web]Session | 一文详细介绍会话跟踪技术中的Session

5、Cookie和Session的区别

Session和Cookie都是在Web应用程序中维护客户端状态的机制,但它们有一些不同之处。

  1. 存储位置: Cookie存储在客户端的浏览器中,而Session存储在服务器上。
  2. 存储内容: Cookie只能存储少量的文本数据,而Session可以存储任意数据类型,包括对象和数组等。
  3. 安全性: Cookie数据容易被窃取和篡改,因为它存储在客户端浏览器中,可以被恶意脚本访问。Session数据存储在服务器上,只有服务器可以访问,因此更安全。
  4. 数据大小:Cookie最大存储3KB,而Session则无大小限制
  5. 生命周期: Cookie可以通过setMaxAge()设置过期时间以达到长期存储。Session通常会在客户端关闭浏览器或一定时间后自动过期,默认是存储30分钟。
  6. 处理方式: 在Web应用程序中,Cookie是由浏览器自动管理的,而Session是由Web应用程序开发人员手动管理的。
  7. 服务器性能:Cookie不占服务器资源,而Session则占用服务器资源

  总之,Session和Cookie都是用于在Web应用程序中维护客户端状态的机制。Cookie存储在客户端浏览器中,可以存储少量的文本数据,具有一定的安全风险;而Session存储在服务器上,可以存储任意数据类型,更安全,但需要开发人员手动管理。

6、总结

Cookie和Session各有千秋,但是在实际使用中如何选择,是有不同。综合上面提到的,总结在实际使用中,如何判断是使用Cookie存储还是使用Session存储:
以下是一些考虑因素:

  1. 数据大小: 如果要存储的数据较小,比如用户的偏好设置、上次登录时间等,可以考虑使用Cookie存储。
  2. 数据敏感性: 如果要存储的数据比较敏感,比如用户的身份认证信息、个人隐私信息等,建议使用Session存储,因为Session数据存储在服务器上,更加安全。
  3. 跨站点数据访问: 如果需要在多个域名或子域名之间共享数据,可以考虑使用Cookie存储,因为Cookie可以在不同的域名之间共享数据。Session则只能在同一个域名下共享数据。
  4. 有效期: 如果需要在客户端浏览器关闭后或过一定时间后删除数据,可以考虑使用Cookie存储。如果需要在整个会话期间都保留数据,可以使用Session存储。

总之,在实际使用中,需要根据具体情况来选择使用Cookie存储还是Session存储,考虑因素包括数据大小、数据敏感性、跨站点数据访问和有效期等。

[Java Web]会话跟踪技术相关推荐

  1. java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...

  2. java logout session_会话跟踪技术--session的使用

    会话跟踪技术--session的使用 会话跟踪: 1.使用隐藏表单字段 2.URL重写 http://host/path/file.jsp?sessionid=landril 3.持久Cookie 4 ...

  3. java 4种跟踪会话技术_会话跟踪技术

    一.会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据,这就是会话跟踪技术 会话路径技术使用Cookie ...

  4. JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能

    会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...

  5. 会话跟踪技术Cookieless

    会话跟踪技术Cookieless 在Web应用中,通常使用Cookie记录用户的状态,如用户名.访问时间等信息.当进行HTTP请求的时候,会自动发送Cookie信息给服务器.服务器接收到,就可以判断用 ...

  6. [javaweb] servlet-session 会话跟踪技术 与 session保存作用域 (三)

    引入 Http是无状态的 -HTTP无状态︰服务器无法判断这两次请求是同一个客户端发过来的,还是不同的客户端发过来的 -无状态带来的现实问题∶第一次请求是添加商品到购物车,第二次请求是结账;如果这两次 ...

  7. JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域

    会话跟踪技术Session.Cookie.url.隐藏表单域 (一)Session session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大. 浏览器第一次访问服务器时会创建一个ses ...

  8. java web 应用技术与案例教程_《Java Web应用开发技术与案例教程》怎么样_目录_pdf在线阅读 - 课课家教育...

    出版说明 前言 第1章 java Web应用开发技术概述 1.1 Java Web应用开发技术简介 1.1.1 Java Web应用 1.1.2 Java Web应用开发技术 1.2 Java Web ...

  9. JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...

最新文章

  1. mybatisgenerator使用_MyBatis Generator,帮你少写50%代码的自动化工具,你用过吗?
  2. 深入理解Java:注解(Annotation)自定义注解入门
  3. 杂项题的基本解题思路——1、文件操作与隐写
  4. 人脸识别代码_Python人脸识别源代码可自动识别出年龄、性别等
  5. 为什么在Python中使用string.join(list)而不是list.join(string)?
  6. 使用注解匹配Spring Aop切点表达式
  7. linux c设置系统时间函数,Linux C 中获取local日期和时间 time()localtime()函数
  8. es6,es7,es8语法总结
  9. linux mono环境
  10. 3D视频的质量评价报告 (MSU出品)
  11. 在Ubuntu 18.04上安装Nginx
  12. [私人] T460p上运行orbit_js报ERR_NO_ICU的问题
  13. linux gif录制工具,Ubuntu中的Gif动画录制工具byzanz
  14. 栈的应用:火车调度问题
  15. Decal Buffer相关
  16. Android 练习项目 ——简单记账软件的实现
  17. 【人脸识别(三)】:使用face_recognition库实现人脸识别,python实现
  18. PowerPoint 录制屏幕+解决找不到免费录制屏幕软件
  19. LinkedList底层链表结构
  20. TCP模拟HTTP请求

热门文章

  1. linux中initrd的含义,浅谈linux启动的那些事(initrd.img)
  2. 常用HTML 头部代码
  3. 解决罗技G502HERO鼠标乱飘的问题
  4. Python爬取设计素材网站,免费使用素材,花钱不存在花钱的
  5. MySQL中字符串类型的字段最大使用longtext来存储
  6. 计算每月有几周,并且返回每周的具体日期(按照实际日历)
  7. 13 行 JavaScript 代码让你看起来像是高手
  8. java的集合知识点
  9. lower_bound( )和upper_bound( )的返回值及用法
  10. pycharm专业版的合法激活方法