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月前
|
Web App开发 SQL Java
javaweb实现分页(二)
javaweb实现分页(二)
19 1
|
1月前
|
SQL 关系型数据库 MySQL
javaweb实现分页查询(一)
javaweb实现分页查询(一)
18 0
|
1月前
|
SQL 关系型数据库 MySQL
javaweb中实现分页,持续更新……
javaweb中实现分页,持续更新……
16 1
|
1月前
|
Java Spring 容器
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
[JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
|
1月前
JavaWeb 开发之 ServletContext 的和使用
JavaWeb 开发之 ServletContext 的和使用
22 1
|
27天前
|
SQL 前端开发 Java
Java后端进阶之路: JavaWeb(四)
Java后端进阶之路: JavaWeb
33 1
|
XML SQL Java
Java后端进阶之路: JavaWeb(三)
Java后端进阶之路: JavaWeb
30 1
|
2月前
|
设计模式 XML 前端开发
JavaWeb 会话_过滤_监听器
JavaWeb 会话_过滤_监听器
26 0
|
3月前
|
SQL JSON 前端开发
JavaWeb:商品管理系统(Vue版)
JavaWeb商品管理系统是一个使用Java语言开发的,用于管理商品信息的Web应用程序。它提供了一套完整的功能,包括商品的增加、删除、修改和查询等操作。
52 2
JavaWeb:商品管理系统(Vue版)
|
3月前
|
Java 关系型数据库 MySQL