day10_cookie&session

本文深入探讨了计算机领域中的会话概念,包括会话在客户端与服务器间的通讯过程,重点介绍了Cookies与Session对象的作用及实现机制,同时讨论了客户端禁用Cookie后的会话数据保存问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话概述

什么是会话?

在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。会话较多用于网络上,TCP的三次握手就创建了一个会话,TCP关闭连接就是关闭会话。

即我们打开一个网页进入系统,在一个系统上进行一系列操作直至关闭窗口就是一次会话

会话解决的问题?

保持各个客户端自己的数据>>cookies/session

我们的账号密码就保存在cookies上面

Cookie对象

由于cookie是由客户端浏览器保存和携带的,所以称之为客户端技术

属性:

name: 名称不能唯一确定一个cookie。路径可能不同

value: 不能存中文

path: 默认是写入cookie那个应用的访问路径

如:http://localhost:8080/day10/servlet/cookieDemo1

Path: /day10/servlet/

当客户端访问服务器其它资源时,根据访问路径来决定是否带着cookie到服务器

当访问的路径是以cookiepath开头的路径,就带cookie,否则就不带。

maxAge: cookie的保存时间。默认是-1(表示保存在浏览器的内存中)。单位是秒

负数:cookie存在浏览器的内存中。

0:删除。路径要保持一致,否则会删错了。

正数:缓存(持久化到磁盘中)的时间。

Session对象

HttpSession

> 它也是一个域对象: session   servletContext  request

> 同一个会话下,可以使一个应用的多个资源共享数据

> cookie客户端技术,只能存字符串。HttpSession服务器端的技术,它可以存对象

常用方法

把数据保存在HttpSession对象中,该对象也是一个域对象。

void setAttribute(String name,Object value);

Object getAttribute(String name);

void removeAttribute(String name);

HttpSession.getId():

setMaxInactiveInterval(int interval)  设置session的存活时间

invalidate() 使此会话无效

getSession():内部执行原理

HttpSession request.getSession():内部执行原理

  • 获取名称为JSESSIONID的cookie的值。
  • 没有这样的cookie,创建一个新的HttpSession对象,分配一个唯一的SessionID,并且向客户端写了一个名字为JSESSIONID=sessionID的cookie
  • 有这样的Cookie,获取cookie的值(即HttpSession对象的值),从服务器的内存中根据ID找那个HttpSession对象:

找到了:取出继续为你服务。

找不到:从2开始。

HttpSession request.getSession(boolean create):

参数:

true:和getSession()功能一样。

false:根据客户端JSESSIONID的cookie的值,找对应的HttpSession对象,找不到返回null(不会创建新的,只是查询)。

客户端禁用Cookie后的会话数据保存问题

客户端禁用cookie:浏览器永远不会向服务器发送cookie的请求消息头

解决方案:

方案一:在主页上给出提示:请不要禁用您的cookie

方案二:URL重写。必须对网站的所有地址都重写。

http://url--->http://url;JSESSIONID=111

response.encodeURL(String url);

看浏览器有没有发送cookie请求消息头,没有就重写URL,有就不重写。

request.getSession();必须写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值