会话:会话包含多次的请求和响应,一次会话就是指浏览器打开到浏览器关闭
Cookie:在多次请求和响应(一次会话)中间利用客户端共享数据
方法 | 描述 |
---|---|
new Cookie(String name, String value) | 创建cookie |
response.addCookie(Cookie cookie) | 添加cookie,可以添加多个cookie,访问时会组合成一个cookie |
Cookie[] request.getCookies() | 获取cookie |
setMaxAge(int seconds) | 设置cookie的有效时长(在硬盘中)正数:秒数,负数:浏览器关闭删除,零:删除cookie |
setPath(String path) | 默认是每个项目的虚拟目录,如果想要共享cookie需要将path设置为“/” |
setDomain(String path) | 设置不同服务器cookie共享 |
原理
每次调用addCookie方法会在request响应头设置set-cookie
每次调用getCookie方法会访问response响应头cookie
中文
tomcat8之前需要将中文数据转码为URL编码,存入。
tomcat8之后支持中文,但是特殊字符不支持,建议用URL编码存储。
共享
1.在一个tomcat服务器,多个web项目,默认不能共享,可以设置setPath(String path)来共享cookie
2.不同tomcat服务器,默认不共享,可以设置setDomain(String path)同一级域名,那么久能共享。
比如.csdn.net
可以共享https://edu.csdn.net/
和https://bbs.csdn.net/
大小和数量
一个cookie最大为4kb,同一个域名最多20个cookie