一:会话跟踪技术
(1)会话
(2)会话跟踪
服务器识别到多个请求,需要识别不同请求是否为同一浏览器发出
(3)使用原因
服务器不知道哪些请求来自同一浏览器(HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求)
HTTP设为无状态原因:如果为由状态那么每一次携带了数据的请求都要携带前一次请求的数据,会导致后面请求数据体量很大,请求访问速度变慢
(4)实现方式(一次会话的多次请求数据共享)
二:Cookie
2.1 基本使用
(1)定义
浏览器发送请求到servlet A ,servlet A 里创建cookie对象,servlet A 做出响应的时候将cookie发送到客户端浏览器。浏览器在同一次会话中请求servlet B,浏览器会携带cookie访问servlet B
(2)基本使用
从服务器端来看:发送cookie到客户端,客户端怎么存,将来携带cookie怎么再次访问不管。客户端下次携带cookie请求服务端数据,服务端需要获取session数据
发送cookie
获取cookie
2.2 原理
Cookie的实现是基于HTTP协议的,响应头:set-cookie、请求头:cookie
2.3 使用细节
(1)Cookie存活时间
(2)Cookie存储中文
编码 解码
三:Session
3.1 基本使用
(1)定义
数据存在服务端,通过不同Servlet获取同一Session对象。A servlet 往Session内存储数据,B servlet通过Session对象获取数据
(2)获取Session对象
Java EE 提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
3.2 原理+细节
(1)Session原理
一个会话的多次请求之间获取到的Session是同一个
通过demo1获取session的唯一标识(id),tomcat给对应浏览器做出响应(tomcat自动把session的id当作一个cookie发送给客户端浏览器),客户端将session存储到内存中,客户端下一次携带cookie信息访问demo2
(2)使用细节
四:Filter
4.1 概述
(1)定义
Filterr表示过滤器,是JavaWeb三大组件(Servlet、 Filterr、Listener)之一
(2)通用操作
访问任何资源都要走过滤器
4.2 快速入门
(1)执行流程
(2)快速入门
定义类实现Filter接口(重写所有方法)-使用@WebFilter注解配置过滤器(配置Filter拦截资源的路径)-放行(拦下来后做了增强处理,得放走请求,访问后面的资源)
4.3 注意点
(1)拦截器路径配置
(2)过滤器链
4.4 案例(登录验证)
(1)代码编写
(2)前后端联调测试
(3)代码完善
所有请求都被拦截验证用户是否登录,访问登录页面时自带资源(css+图片)这些资源被拦截需要登录后才能访问,所以和登录相关的资源需要放行
处理逻辑
代码