【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

相关文章
|
3天前
|
存储 算法 安全
Java对象创建和访问
Java对象创建过程包括类加载检查、内存分配(指针碰撞或空闲列表)、内存初始化、对象头设置及初始化方法执行。访问方式有句柄和直接指针两种,前者稳定但需额外定位,后者速度快。对象创建涉及并发安全、垃圾回收等机制。
Java对象创建和访问
|
2月前
|
NoSQL JavaScript 前端开发
Java访问MongoDB
Java访问MongoDB
45 21
|
2月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
42 4
|
2月前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
深入理解MyBatis的Mapper层,以及让数据访问更高效的详细分析
111 1
|
2月前
|
存储 监控 Java
JAVA线程池有哪些队列? 以及它们的适用场景案例
不同的线程池队列有着各自的特点和适用场景,在实际使用线程池时,需要根据具体的业务需求、系统资源状况以及对任务执行顺序、响应时间等方面的要求,合理选择相应的队列来构建线程池,以实现高效的任务处理。
147 12
|
4月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
135 3
|
4月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
94 3
|
4月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
104 2
|
4月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
72 2

热门文章

最新文章