Cookie与Session详解:客户端与服务器端会话技术
需积分: 9 140 浏览量
更新于2024-08-05
收藏 11KB MD 举报
"Cookie&Session笔记.md"
在Web开发中,会话管理是至关重要的,它允许用户在多次请求之间保持状态。本笔记主要探讨两种常见的会话技术:Cookie和Session,以及它们在JSP中的应用。
### 会话技术
会话是指用户打开浏览器与服务器进行一系列交互的过程。在一次会话期间,可能会有多个HTTP请求和响应。会话的主要目的是在这些请求之间共享数据,以保持用户的上下文信息。会话技术分为客户端会话技术和服务器端会话技术。
#### Cookie
**Cookie** 是客户端会话技术,它将数据存储在用户的浏览器上。通过以下步骤,我们可以创建和使用Cookie:
1. **创建Cookie对象**:使用`new Cookie(String name, String value)`创建一个Cookie,其中`name`是键,`value`是值。
2. **发送Cookie**:通过`response.addCookie(Cookie cookie)`将Cookie添加到响应头中,发送给客户端。
3. **获取Cookie**:在后续的请求中,服务器可以通过`Cookie[] request.getCookies()`获取客户端发送的所有Cookie。
Cookie的实现基于HTTP协议的响应头`Set-Cookie`和请求头`Cookie`。每次浏览器收到`Set-Cookie`,它会将Cookie保存,并在后续请求中自动将Cookie信息放入`Cookie`头。
**Cookie的特性**:
- **数量限制**:浏览器通常允许每个域最多存储20个Cookie,且总大小不超过4KB。
- **生命周期**:默认情况下,Cookie在浏览器关闭时被删除。若要持久化存储,需使用`setMaxAge(int seconds)`方法,设置非负值表示存活时间,零或负值表示立即或不再保留。
- **字符编码**:早期版本的Tomcat不支持直接存储中文数据,需要URL编码。但从Tomcat 8开始,Cookie可以直接处理中文,但仍然推荐使用编码以兼容特殊字符。
- **共享问题**:默认情况下,Cookie只在设置的路径内有效,不同web项目间无法共享。通过`setPath(String path)`可以扩大Cookie的作用域,实现共享。
#### Session
**Session** 是服务器端会话技术,它在服务器上为每个用户分配一个唯一的会话ID,并通过Cookie(默认)或URL重写等方式将该ID返回给客户端。在后续请求中,客户端携带会话ID,服务器根据ID找到对应会话中的数据。
**Session的使用**:
1. **创建Session**:`HttpSession session = request.getSession();`
2. **存储数据**:`session.setAttribute(String name, Object value);`
3. **获取数据**:`Object value = session.getAttribute(String name);`
4. **销毁Session**:`session.invalidate();`
**Session的特点**:
- **存储容量**:相比于Cookie,Session能存储更多数据,不受大小限制。
- **生命周期**:默认情况下,Session在一段时间无活动后自动失效,时间间隔可在服务器配置。
- **安全性**:Session数据存储在服务器,相对更安全,但服务器内存消耗大。
- **共享问题**:在同一个应用下,Session默认是共享的,无需额外设置。
在JSP中,我们可以使用内置的`session`对象直接操作Session,简化开发流程。
总结来说,Cookie适合存储较小量、不需要长期保存的数据,而Session适用于存储大量或敏感的数据,两者结合使用可以提供灵活的会话管理策略。了解和掌握这两种技术对于Web开发者来说至关重要,因为它们是构建动态、交互性强的Web应用的基础。
2023-08-27 上传
2023-03-30 上传
2024-03-03 上传
2021-02-23 上传
2012-09-02 上传
2024-06-21 上传
2024-06-21 上传
2012-03-21 上传
2020-10-30 上传
Sherry_gong
- 粉丝: 0
- 资源: 1
最新资源
- 计算机一级考试机试试题
- DDS芯片AD9850的工作原理及其与单片机的接口
- Beginning Web Development Silverlight and ASP.NET AJAX - From Novice to Professional
- 详细的jsp分页程序!(oracle+jsp+apache)
- 新一代人机交互中的二维图像AVR 重建
- Protel99教程.doc
- C# 命名空间编译单元命名空间声明
- The Unified Modeling Language Reference Manual
- C程序设计 学生成绩管理系统
- VC客户/服务通信编程(ServerSocket詳解).pdf
- 跟我一起写Makefile.txt
- linux vim 使用手册
- JavaScript语言精髓与编程实践
- java文件操作大全.txt
- 如何画状态图pdf格式
- [翻译版]FPGA设计经验谈.pdf