session

Session概述
(1)Session用于记录用户的状态。Session指的是一段时间内,单个客户端与Web服务器的一连串相关的交互过程。

(2)在一个Session中,客户可能会多次请求访问同一个资源,也有可能请求访问各种不同的服务器资源。

(3)Session是由服务器端创建的

2 Session原理
(1)Session会为每一次会话分配一个Session对象

(2)同一个浏览器发起的多次请求,同属于一次会话(Session)

(3)首次使用到Session时,服务器会自动创建Session,并创建Cookie存储SessionId发送回客户端

3 Session使用
Session作用域:拥有存储数据的空间,作用范围是一次会话有效

一次会话是使用同一浏览器发送的多次请求。一旦浏览器关闭,则结束会话

可以将数据存入Session中,在一次会话的任意位置进行获取

可传递任何数据(基本数据类型、对象、集合、数组)

3.1 获取Session
Session是服务器端自动创建的,通过request对象获取

3.2Session保存数据

使用setArrtibute(属性名,Object)保存数据到session中

3.3 Session获取数据

3.4 Session移除数据

(1)使用removeAttribute("属性名");从session中删除数据

3.5 Session与Request应用区别

(1)request是一次请求有效,请求改变,则request改变

(2)session是一次会话有效,浏览器改变,则session改变

Session的声明周期

  1. 第一次使用到Session的请求产生,则创建Session
  2. 结束
  1. 浏览器关闭,则失效
  2. Session超时,则失效。session.setMaxInactiveInterval(seconds);//设置最大有效时间(单位:秒)
  3. 手工销毁,则失效。session.invalidate();//登录退出,销毁

浏览器禁用Cookie解决方案

服务器在默认情况下,会使用Cookie的方式将sessionID发送给浏览器,如果用户禁止Cookie,则sessionID不会被浏览器保存,此时,服务器可以使用URL重写这样的方式来发送sessionID。

  1. Cookie

    • 存储位置:Cookie 是存储在客户端(浏览器)的一小段文本信息,由服务器发送给浏览器,并存储在客户端的内存或硬盘上。
    • 数据大小:每个 Cookie 的大小通常有限制,一般在几 KB 到几 MB 之间。
    • 使用场景:Cookie 通常用于存储一些小型的数据,如用户偏好设置、登录凭证、跟踪用户行为等。
    • 安全性:Cookie 可以被用户查看和修改,因此不适合存储敏感信息,如密码等。
  2. Session

    • 存储位置:Session 是存储在服务器端的一段会话状态信息,通常存储在服务器的内存或数据库中。
    • 数据大小:Session 的大小通常没有明确限制,但受服务器内存或数据库大小的限制。
    • 使用场景:Session 通常用于存储较大量的用户状态信息,如用户登录状态、购物车内容、用户权限等。
    • 安全性:由于 Session 存储在服务器端,用户无法直接访问和修改其中的数据,因此比 Cookie 更安全。
6.2 URL重写

浏览器在访问服务器上的某个地址时,不再使用原来的那个地址,而是使用经过改写的地址(即在原来的地址后面加上了sessionID)

组成

  1. Cookie 的组成

    • 名称(Name):Cookie 的标识符,用于唯一标识一个 Cookie。
    • 值(Value):存储在 Cookie 中的数据,通常是一个字符串。
    • 域(Domain):Cookie 的作用域,即可以访问该 Cookie 的域名。默认情况下,Cookie 的作用域是发送该 Cookie 的服务器的域名。
    • 路径(Path):指定可以访问该 Cookie 的路径。默认情况下,Cookie 的路径是发送该 Cookie 的请求的路径。
    • 过期时间(Expires/Max-Age):指定 Cookie 的过期时间。当超过过期时间后,该 Cookie 将被删除。如果不设置过期时间,Cookie 将成为会话 Cookie,只在当前会话有效。
    • 安全标志(Secure):指示浏览器仅在通过 HTTPS 连接时才发送 Cookie。
    • HTTP Only 标志(HttpOnly):指示浏览器不应通过脚本访问 Cookie,只能通过 HTTP 协议进行访问,以防止跨站脚本攻击(XSS)。
  2. Session 的组成

    • Session ID(会话标识符):用于唯一标识一个会话,通常存储在 Cookie 中或者通过 URL 重写方式传递给客户端。
    • Session 数据:存储在服务器端的会话数据,包括用户的状态信息、登录信息、购物车内容等。
    • 过期时间:Session 的过期时间,通常由服务器端管理,可以根据配置或会话活动情况决定。

如何解决Session集群共享问题

  • 方案一Session拷贝(不推荐)

    Tomcat提供了Session拷贝功能,通过配置Tomcat可以实现Session的拷贝,但是这会增加服务器的额外内存开销,同时会带来数据一致性问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mmm`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值