聊一下会话跟踪技术

时间:2022-07-26
本文章向大家介绍聊一下会话跟踪技术,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 概述

  HTTP 是无状态,无状态是指协议对于事务处理没有记忆能力,不能保存每次客户端提 交的信息,即当服务器返回应答之后,这次事务的所有信息就都丢掉了。如果用户发来一 个新的请求,服务器也无法知道它是否与上次的请求有联系。为了解决这个问题我们引入了会话跟踪技术, 客户端会话技术:Cookie;服务器端会话技术:Session

  Cookie 并不是它的原意“小饼干”的意思,而是一个保存在客户机中的简单的文本文件,这个文件与特定的 Web 文档关联在一起,保存了该客户机访问这个 Web 文档时的信息,当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性,因此它可以帮助我们实现记录用户个人信息的功能。   一个 Web 站点可能会为每一个访问者产生一个唯一的ID,然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web,会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名,就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存)。

创建 Cookie 对象

// 创建Cookie对象,绑定数据
Cookie cookie = new Cookie(String name, String value) 

添加 Cookie

// 将 Cookie 添加到 response 中,一起返回给浏览器
response.addCookie(Cookie cookie)

获取 Cookie

// 可能有多个值,返回 Cookie[]  
request.getCookies()  

Cookie 有存活时常   Cookie 具有存活时常,不设置的话默认是临时存储,即默认会话结束销毁。可以使用 setMaxAge(sconds) 来设置 Cookie 的存活时常,正数:存活秒数。写出到硬盘存储,到期自动删除,最大为 int 表示的最大值(68年左右);负数:默认。Cookie 保存在内存中;0:立即删除。

Cookie 内存大小受限制

  Cookie 有个数和大小的限制,一般每个域名 Cookie 限制为 20 个,大小为 4K

IE 6.0

IE 7.0 / 8.0

Opera

Firefox

Safari

Chrome

Cookie 个数

每域 20 个

每域 50 个

每域 30 个

每域 50 个

没有个数限制

每域 53 个

Cookie 总大小

4095 字节

4095 字节

4096 字节

4097 字节

4097 字节

4097 字节

1.3 Session

1.3.1 什么是 Session

  Session 机制是一种服务器端的机制,服务器使用一种类似于散列表的结构来保存信息。   当程序需要为某个客户端的请求创建一个 Session 时,服务器首先检查这个客户端的请求里是否已包含了一个 Session 标识即 SessionId,如果已包含则说明以前已经为此客户端创建过 Session,服务器就按照 SessionId 把这个 Session 检索出来使用,检索不到,会新建一个,如果客户端请求不包含SessionId,则为此客户端创建一个 Session 并且生成一个与此 Session 相关联的 SessionId,SessionId的值是一个独一无二的字符串,这个 SessionId 将被在本次响应中返回给客户端保存。

1.3.2 Session 的使用

获取 Session 对象

HttpSession session = request.getSession();

获取值

session.getAttribute(String name)  

设置值

session.setAttribute(String name, Object value)

删除值

session.removeAttribute(String name) 

其他方法

// 获取 sessionId
session.getId();

// 设置 session 过期时间
session.setMaxInactiveInterval(sconds);

// 销毁session的方法
session.invalidate();

// 获得 session 的创建时间
session.getCreationTime();

// 获得 session 最后一次被使用的时间
session.getLastAccessedTime();

1.3.3 Session 的特点

Session 的存活时常   Session 依赖于 Cookie,窗口关闭 Cookie 销毁后 Session 无法使用;Session 默认半小时内没有再次链接时销毁。

 ① Cookie 存储在客户端,易被篡改  ② Cookie 只要 Cookie 不被销毁则可以在多次请求多次连接共享数据  ③ Cookie 有大小限制和数量限制

1.4.2 Session

 ① Session 存储在服务器,相对安全  ② Session 理论没有存储限制  ③ 只要 Cookie 和 Session 不被销毁则在可以多次请求多次连接共享数据