Fivk博客 - 会话技术
type: channel
link: https://blog.fivk.cn/tag/%E4%BC%9A%E8%AF%9D%E6%8A%80%E6%9C%AF/
items: 【JavaWeb】会话技术

【JavaWeb】会话技术
type: item
date: 2022-04-20T18:32:00+08:00
description: 会话技术今日目标理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用完善用户登录注册案例的功能1，会话跟踪技术的概述对于会话跟踪这四个词，我们需要拆开来进行解释，首先要理解什么是会话，然后再去理解什么是会话跟踪:会话:用户打开浏览器，访问web服务器的资源，会话建立，直到有一方断开连接，会话结束。在一次会话中可以包含多次请求和响应。从浏览器发出请求到服务端响应数据给前端之后，一次会话(在浏览器和服务器之间)就被建立了会话被建立后，如果浏览器或服务端都没有被关闭，则会话就会持续建立着浏览器和服务器就可以继续使用该会话进行请求发送和响应，上述的整个过程就被称之为会话。用实际场景来理解下会话，比如在我们访问京东的时候，当打开浏览器进入京东首页后，浏览器和京东的服务器之间就建立了一次会话，后面的搜索商品,查看商品的详情,加入购物车等都是在这一次会话中完成。思考:下图中总共建立了几个会话?每个浏览器都会与服务端建立了一个会话，加起来总共是3个会话。会话跟踪:一种维护浏览器状态的方法，服务器需要识别多次请求是否来自于同一浏览器，以便在同一次会话的多次请求间共享数据。服务器会收到多个请求，这多个请求可能来自多个浏览器，如上图中的6个请求来自3个浏览器服务器需要用来识别请求是否来自同一个浏览器服务器用来识别浏览器的过程，这个过程就是会话跟踪服务器识别浏览器后就可以在同一个会话中多次请求之间来共享数据那么我们又有一个问题需要思考，一个会话中的多次请求为什么要共享数据呢?有了这个数据共享功能后能实现哪些功能呢?购物车: 加入购物车和去购物车结算是两次请求，但是后面这次请求要想展示前一次请求所添加的商品，就需要用到数据共享。页面展示用户登录信息:很多网站，登录后访问多个功能发送多次请求后，浏览器上都会有当前登录用户的信息[用户名]，比如百度、京东、码云等。网站登录页面的记住我功能:当用户登录成功后，勾选记住我按钮后下次再登录的时候，网站就会自动填充用户名和密码，简化用户的登录操作，多次登录就会有多次请求，他们之间也涉及到共享数据登录页面的验证码功能:生成验证码和输入验证码点击注册这也是两次请求，这两次请求的数据之间要进行对比，相同则允许注册，不同则拒绝注册，该功能的实现也需要在同一次会话中共享数据。通过这几个例子的讲解，相信大家对会话追踪技术已经有了一定的理解，该技术在实际开发中也非常重要。那么接下来我们就需要去学习下会话跟踪技术，在学习这些技术之前，我们需要思考:为什么现在浏览器和服务器不支持数据共享呢?浏览器和服务器之间使用的是HTTP请求来进行数据传输HTTP协议是无状态的，每次浏览器向服务器请求时，服务器都会将该请求视为新的请求HTTP协议设计成无状态的目的是让每次请求之间相互独立，互不影响请求与请求之间独立后，就无法实现多次请求之间的数据共享分析完具体的原因后，那么该如何实现会话跟踪技术呢? 具体的实现方式有:(1)客户端会话跟踪技术：Cookie(2)服务端会话跟踪技术：Session这两个技术都可以实现会话跟踪，它们之间最大的区别:Cookie是存储在浏览器端而Session是存储在服务器端具体的学习思路为:CooKie的基本使用、原理、使用细节Session的基本使用、原理、使用细节Cookie和Session的综合案例小结在这节中，我们主要介绍了下什么是会话和会话跟踪技术，需要注意的是:HTTP协议是无状态的，靠HTTP协议是无法实现会话跟踪想要实现会话跟踪，就需要用到Cookie和Session这个Cookie和Session具体该如何使用，接下来就先从Cookie来学起。2，Cookie学习Cookie，我们主要解决下面几个问题:什么是Cookie?Cookie如何来使用?Cookie是如何实现的?Cookie的使用注意事项有哪些?2.1 Cookie的基本使用1.概念Cookie：客户端会话技术，将数据保存到客户端，以后每次请求都携带Cookie数据进行访问。2.Cookie的工作流程服务端提供了两个Servlet，分别是ServletA和ServletB浏览器发送HTTP请求1给服务端，服务端ServletA接收请求并进行业务处理服务端ServletA在处理的过程中可以创建一个Cookie对象并将name=zs的数据存入Cookie服务端ServletA在响应数据的时候，会把Cookie对象响应给浏览器浏览器接收到响应数据，会把Cookie对象中的数据存储在浏览器内存中，此时浏览器和服务端就建立了一次会话在同一次会话中浏览器再次发送HTTP请求2给服务端ServletB，浏览器会携带Cookie对象中的所有数据ServletB接收到请求和数据后，就可以获取到存储在Cookie对象中的数据，这样同一个会话中的…