【JavaWeb】案例一:记录用户的上次访问时间

简介: 本期主要介绍案例一:记录用户的上次访问时间

1.1、 流程及技术分析


image.png

域对象:

request :仅针对某次请求,因为该案例会有两次请求,所以无法使用 request

ServletContext :针对整个项目所有请求,会导致用户 1 记录的时间被其他用户使用。

会话技术:

相当于浏览器和服务器之间打电话的技术。

image.png

浏览器和服务器本身都是健忘症患者。

会话数据需要记录:要么小红记录,要么小明记录

浏览器 服务器

会话技术:

保存在浏览器的会话技术 ----Cookie

保存在服务器的会话技术 ----Session  

1.2、 讲解:cookie


1.2.1cookie 简述


保存在浏览器端的会话技术。

Cookie-----小甜点,小饼干

Cookie 就相当于浏览器和服务器之间传递的一张小纸条。

服务器负责写小纸条,负责查看小纸条

浏览器负责保存小纸条,负责把小纸条展示给服务器看

作用:就是为了保存会话数据

1.2.2cookie 入门案例


入门案例 1

服务器如何书写 cookie,如何把 cookie 传递给浏览器保存的

Cookie 的基本使用:

image.png

image.png

1.2.3cookie 获取及 cookie 原理


入门案例 2:服务器如何接收并查看浏览器传递来的 cookie

服务器的关闭与否,不会影响浏览器的 cookie 保存

image.png

上述方法若获取不到 cookie,就会返回 null 

image.png

1.2.4cookie 使用注意


1 、 cookie 是由 http 协议制定,只要使用 http 协议,就可以使用 cookie 。浏览器、手机端

2 、 cookie 保存是有上限。

Cookie 的 value 值不能太多, 4K.

一个浏览器保存的 cookie 也是有上限。 300

一个网站只能在一个浏览器上最多保存 30 个。

例如:商品浏览记录、上次访问记录、 7 天内自动登录。。

3 、 cookie 不能直接保存中文  

image.png

获取到值使用时,需要进行 url 解码。URLDecoder.decode

建议:cookie 中不要保存中文

1.2.5cookie 种类


Cookie 分为两种:

保存在浏览器内存中的 cookie (默认)。 特点是:浏览器关闭, cookie 就会销毁

保存在浏览器对应的硬盘上(持久化 cookie )。 特点:浏览器即使关闭,cookie 也会保存下来

image.png

问题:cookie 保存 7 天?

60*60*24*7

image.png

image.png

1.2.6cookie 的有效路径


Cookie 会保存在硬盘上,保存路径,是由浏览器来自动控制。

访问某路径,带哪些 cookie ,才要根据 cookie 的有效路径来判断 。

image.png

访问的路径等于或者包含 某个 cookie 的有效路径,这个 cookie 就会被发送过来

image.png

总结:一般都要进行 setPath(request.getContextPath()+”/”); // /day37_1/

1.2.7cookie 的唯一标识


Cookie 是可以进行分别保存或者相互覆盖的。

Cookie 如何进行相互覆盖,新 cookie 会覆盖旧 cookie ,

前提: cookie 的唯一标识必须完全相同(身份证)

唯一标识: 域名 + 有效路径 +cookie 名称

例如 1 :

C1:http://www.baidu.com/ /hehe/ nihao

C2: http://www.itcast.cn/ /hehe/ nihao

会分别保存,因为域名不同

例如 2 :

C1:http://www.baidu.com/ /hehe/ nihao

C2: http://www.baidu.com/ /haha/ nihao

会分别保存,因为有效路径不同

例如 3 :

C1:http://www.baidu.com/ /hehe/ k1

C2: http://www.baidu.com/ /hehe/ k2

会分别保存,因为 cookie 名称不同

例如 4 :

C1:http://www.baidu.com/ /hehe/ k1

C2: http://www.baidu.com/ /hehe/ k1

唯一标识相同,判定是同一个 cookie ,新的 cookie 会覆盖旧的 cookie

域名不用手动设置,因为 tomcat 服务器会设置 .

我们只要关注: 有效路径 和 cookie 名称 即可

1.3、 代码实现


Visit

image.png

image.png

相关文章
|
8天前
|
存储 缓存 Java
Java中的缓冲流提升I/O性能,通过内存缓冲区减少对硬件访问
【6月更文挑战第22天】Java中的缓冲流提升I/O性能,通过内存缓冲区减少对硬件访问。`BufferedInputStream`和`BufferedOutputStream`用于字节流,缓存数据批量读写。`BufferedReader`和`BufferedWriter`处理字符流,支持按行操作。使用后务必关闭流。
19 3
|
7天前
|
设计模式 安全 Java
Java中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点
Java单例模式确保类仅有一个实例,并提供全局访问点。常见实现包括: - 饿汉式:静态初始化,线程安全。 - 懒汉式:延迟初始化,需同步保证线程安全。 - 双重检查锁定:优化懒汉式,减少同步开销。 - 静态内部类:延迟加载,线程安全。 - 枚举:简洁线程安全,不适用于复杂构造。 - 容器实现:如Spring框架,用于依赖注入。选择依据需求,如延迟加载、线程安全和扩展性。
36 10
|
2天前
|
Java 测试技术 数据库连接
解密Java事务传播行为与隔离级别:案例详解与解决方案
解密Java事务传播行为与隔离级别:案例详解与解决方案
5 1
|
2天前
|
Java API Maven
使用Java Libvirt API 访问虚拟机信息
使用Java Libvirt API 访问虚拟机信息
5 1
|
7天前
|
设计模式 安全 Java
Java单例模式确保类仅有一个实例,提供全局访问点。常见实现包括
【6月更文挑战第23天】Java单例模式确保类仅有一个实例,提供全局访问点。常见实现包括: 1. 饿汉式:静态初始化时创建实例,线程安全。 2. 懒汉式:首次请求时创建,需同步保障线程安全。 3. 双重检查锁定:优化懒汉式,减少同步开销。 4. 静态内部类:延迟加载,线程安全。 5. 枚举:简洁线程安全,但构造受限。 6. 容器实现:如Spring框架,适用于依赖注入。选择依据需求如延迟加载、线程安全等。
14 1
|
2天前
|
安全 Java 数据安全/隐私保护
解决Java中的并发访问问题
解决Java中的并发访问问题
|
3天前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
|
3天前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
12 0
|
4天前
|
前端开发 JavaScript 算法
javaweb(四)——过滤器与监听器
javaweb(四)——过滤器与监听器
|
4天前
|
Java BI Serverless
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作
Java8 Stream深度解析:30个案例3万字助你精通集合筛选、归约、分组与聚合操作