简介
- Cookie是服务器提供的一种技术,通过服务器的程序将一些只须存放在客户端,或者在客户端进行处理的数据,放在本地的计算机上,不需要网络传输,提高网页处理效率,降低服务器荷载。
- 由于Cookie是服务端保存在客户端的信息,其安全性也是很差的,常见的记住密码就是Cookie实现。
- 大小(4KB)
- 专门操作Cookie的类,javax.servlet.http.Cookie 随着服务器端的响应发送给客户端,保存在浏览器。当下次访问服务器时把Cookie带回服务器。
Cookie对象的创建与发送
@WebServlet("/Coo1")
public class Cookie01 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie = new Cookie("uname","admin");
resp.addCookie(cookie);
}
}

Cookie对象的获取
Cookie设置到期时间
- Cookie默认存活时间是-1,(关闭浏览器即失效);设置为正数,以秒为单位;
- 到期时间的设置
- 正整数:表示存储的秒数
- 负整数:旨在浏览器中存活,浏览器关闭就失效
- 零: 表示删除Cookie(因为Cookie中没有提供删除方法,以此值表示删除方法)
- 设置方法 setMaxAge()
Cookie注意点
- Cookie保存在当前浏览器中,不能跨浏览器
- Cookie中不能直接存中文,中文需要通过 URLEncoder.encode() 方法进行编译; URLDecoder.decode()来进行解码
- 如果服务端发送重复的Cookie那么会覆盖原有的Cookie
- 存放Cookie数量有上限(同一个域名下)
- Cookie在同域名和同路径下,出现相同name属性,会覆盖
- 存中文时报错

@WebServlet("/Coo3")
public class Cookie03 extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = "谈";
String pwd = "韵";
String user_name = URLEncoder.encode(name);
String user_pwd = URLEncoder.encode(pwd);
Cookie cookie = new Cookie(user_name,user_pwd);
resp.addCookie(cookie);
}
}
Cookie 路径
总结
- 当前访问路径包含Cookie的Path属性值时,能获取Cookie对象。