Java中cookie的使用
1.JavaWeb会话:
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程,例如,一个用户在某网站上的整个购物过程就是一个会话。
(1)客户端请求Web服务器时,针对每次HTTP请求,Web服务器都会创建一个HttpServletRequest对象,该对象只能保存本次请求所传递的数据。
(2)使用ServletContext对象保存数据时,由于同一个Web应用共享的是同一个ServletContext对象,因此,当用户在发送结账请求时,由于无法区分哪些商品是哪个用户所购买的,而会将该购物网站中所有用户购买的商品进行结算,这显然也是不可行的。
(3)为了保存会话过程中产生的数据,在Servlet技术中,提供了两个用于保存会话数据的对象,分别是Cookie和Session。
2.cookie概念
- Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据
- 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来
- 当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器
- Cookie就是服务器保存在客户端的数据
- Cookie就是一个键值对
3.cookie的方法
方法声明 | 功能描述 |
---|---|
Cookie(String name, String value) | 构造方法 |
getName() | 获取Cookie的名称 |
setValue() | 设置Cookie的值 |
getValue() | 获取Cookie的值 |
setPath() | 设置Cookie项的有效目录路径 |
getPath() | 获取Cookie的路径 |
setDomain() | 设置Cookie的有效域 |
setMaxAge() | 设置Cookie在浏览器上保持的时间,以秒为单位 |
getMaxAge() | 获取Cookie在浏览器上保持的秒数 |
setVersion() | 设置Cookie采用的协议版本 |
getVersion() | 获取Cookie采用的协议版本 |
setComment() | 设置Cookie的注解部分 |
getComment() | 获取Cookie的注解 |
setSecure() | 设置Cookie是否使用安全的协议传送 |
getSecure() | 获取Cookie是否使用安全的协议传送 |
4.cookie的使用
public void addCookie(HttpServletResponse response, String token, User user) {
redisService.set(UserKey.token, token, user);
Cookie cookie = new Cookie(COOKIE_NAME_TOKEN, token);
cookie.setMaxAge(UserKey.token.expireSeconds()); //cookie的有效期和token保持一致
cookie.setPath("/");//设置为网站根目录
response.addCookie(cookie);
}