Javaweb学习笔记(十)

简介: 本文主要介绍了cookie和session,主要包括它们的简单应用,不涵盖剖析。前言

前言

本文主要介绍内容:

  1. l cookie会话技术介绍
  2. l Session对象的简单介绍

项目环境

开发IDE:IDEA2022(已经配置好了tomcat10 及maven)

JDK版本:jdk17

image.png


一、Cookie会话技术的简单介绍

 

image.png

1.1cookie介绍

cookie是由 servlet 发送到 Web 浏览器的少量信息,由浏览器保存,然后发送回服务器。Cookie 的值可以唯一地标识客户端,因此 Cookie 通常用于会话管理。Cookie 具有名称、单个值和可选属性,如注释、路径和域限定符、最大年龄和版本号。Servlet 通过使用 httpservletresponse.addcookie (javax.servlet.http.cookie)方法向浏览器发送 Cookie,该方法将字段添加到 http 响应头,以便将 Cookie 发送到浏览器,一次一个。浏览器预计每台 Web 服务器支持20个 Cookie,总共300个 Cookie,并可能将 Cookie 大小限制为每个4kb。

image.png

image.png

 

1.2cookie使用实例:

我们假如要通过IDEA来查看一些导入的包的类的源码,可以双击shift,在弹出的页面输入类名即可查阅源码。

image.png

具体的cookie使用方法如下:

 image.png


image.png

具体实例如下:

image.png

实现效果如下:


image.png

image.png

由此可见cookie添加成功了。

1.3cookie细节

image.png

Cookie的路径,它只能拿到当前请求路径的上一级所包含的路径。也就是说,在访问子路径时,会包含其父路径的Cookie,而在访问父路径时,不包含子路径的Cookie.

例如以下的3个地址:

a:http://localhost:8080/Stu/helloSrvlet

b:http://localhost:8080/Stu/helloSrvlet/b

c:http://localhost:8080/Stu/helloSrvlet/b/c

a路径不可以获得b和c路径下的cookie,而b路径可以获得a路径的cookie,c路径可以获得a和b路径的cookie。

 

 

二、session会话技术的简单

image.png

image.png

HttpSession实例如下:

 

image.png

 

具体代码如下:

image.png

image.png

结果如下:

image.png

image.png

2.2浏览器禁用cookie应该怎么办?

禁用了cookie之后,依赖cookie的session便无法起作用,原因是Request是保存在服务器端用户每次请求的信息。SessionId是保存在Cookie中用于识别当前用户的标识,在每次Request请求的时候会从Cookie中取出并传给服务器从而取出当前用户的Session。当禁用Cookie后,Request请求的时候将无法获取到SessionId,从而也无法获取到原来的Session,用户也无法获取到以前存放在Session中的值。会出现如下的效果:

未禁用前,只要客户端没有关闭,则多个页面都会共享一个sessionid,即共享session,SessionServlet01对象存进session的共享数据,SessionServlet02对象可以获取到。

禁用之后,由于此时 HttpSession对象是通过 req.getSession()方法获取到的,默认的布尔值为true,即代表 req.getSession()每次无法通过sessionId获取到session对象时,会重新创建一个session对象,这就代表两次请求的SessionId是不相同的。

 

 

解决方法:

image.png 

方式一代码如下:

可以使用JavaScript弹窗等方式通过提示信息告知用户,本处为了方便,仅将文字输出到浏览器端即可。

image.png

 

结果:

在禁用cookie的浏览器中先访问/sessionServlet01,再访问/sessionServlet03

image.png

image.png

可见客户端并没有将sessionid传给服务端。

 

方式二代码如下:

image.png

 

结果:

image.png

image.png


由此可以看到路径上带了sessionID。

相关文章
|
1月前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
48 0
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
492 37
|
2月前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
38 2
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
76 5
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
3月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
129 2
|
2月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
44 0
|
2月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
47 0