Cookie详解:存储、操作与会话管理

需积分: 0 0 下载量 169 浏览量 更新于2024-08-04 收藏 2.06MB DOCX 举报
Cookie_session笔记1 Cookie,源自英文中的"饼干",在Web开发中扮演着关键角色,它是一种由服务器发送给客户端并在后续请求中携带的小型数据存储机制。Cookie主要用于维护客户端与服务器之间的临时状态,例如用户登录信息、购物车内容等。 1. **定义与作用** Cookie是服务器与客户端之间传输键值对的一种技术。当用户访问一个网站时,服务器会在用户的浏览器上存储一个或多个Cookie,这些信息随后会被包含在客户端的后续请求中,使得服务器能够识别并响应特定的用户状态。 2. **大小限制** 每个Cookie的大小不能超过4千字节(4KB),这是为了确保性能和安全性。如果需要存储大量数据,开发者通常会选择使用HTTP-only cookies或者服务器端会话管理技术,如session。 3. **创建Cookie** - 方案一:可以直接创建一个新的Cookie对象,设置键值对,然后将其添加到响应中。例如,`Cookie cookie = new Cookie("key1", "newValue1"); resp.addCookie(cookie);` - 方案二:如果需要修改已存在的Cookie,首先找到对应的Cookie对象,比如通过`CookieUtils.findCookie("key1", cookies)`获取,然后调用`setValue()`方法更新值,最后将修改后的Cookie添加回响应。 4. **Cookie生命控制** - `setMaxAge()`方法用于设定Cookie的有效期限。正数表示在指定秒数后过期,负数则表示关闭浏览器后删除,而零则立即删除。 5. **Cookie路径管理** `Path`属性定义了Cookie应该被发送到哪些URL。例如,`cookieA.path = "/工程路径"`,意味着只有以"/工程路径"开头的请求才会发送Cookie A,而B的`path = "/工程路径/abc"`则更具体,只有访问"/工程路径/abc"及其子路径的页面才会发送。 6. **用户免密登录与会话管理** - Session会话是另一种在服务器端存储用户状态的技术,它比Cookie更持久且与服务器关联。每当用户访问网站时,服务器会分配一个新的Session ID,这个ID会在HTTP头的`Cookie`或`Set-Cookie`字段中发送给客户端,用于后续请求中标识用户。用户登录后,通常会将用户的登录信息存储在Session中,直到会话结束(例如,浏览器关闭或会话过期)。 7. **创建和验证Session** - 使用`HttpSession`接口创建会话,如`HttpSession session = request.getSession(true)`,`true`参数表示如果不存在就新建一个。获取Session ID可以通过`session.getId()`。在用户登录后,可以检查`isNew()`方法判断是否是新会话。 综上,Cookie和Session是Web开发中常见的客户端状态管理工具,理解它们的工作原理和管理方式对于实现高效、安全的用户体验至关重要。