Cookie学习笔记

客户端会话技术Cookie

概念
将数据保存到客户端
快速入门
1.创建Cookie对象,绑定数据

new Cookie(String name,String value)

2.发送Cookie对象

response.addCookie(Cookie cookie)

3.获取Cookie,拿到数据

Cookie[] request.getCookies()

原理
cookieDemo1类

@WebServlet("/cookieDemo1")
public class CookieDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie c=new Cookie("name","zhangsan");
        response.addCookie(c);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}

cookieDemo2类

@WebServlet("/cookieDemo2")
public class CookieDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();
        if (cookies!=null){
            for (Cookie cookie : cookies) {
                String name = cookie.getName();
                String value = cookie.getValue();
                System.out.println(name+"="+value);
            }
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request,response);
    }
}

在这里插入图片描述基于响应头set-cookie和请求头cookie实现
补充
1.一次可以发送多条cookie

		Cookie c1=new Cookie("name","zhangsan");
        Cookie c2=new Cookie("age","58");
        response.addCookie(c1);
        response.addCookie(c2);

在请求头cookie以,隔开
2.cookie在默认情况下,浏览器关闭后数据被销毁
若是想要持久存储

setMaxAge(int seconds)
	seconds为正数:将cookie数据写到硬盘的文件中,持久化存储。大小代表存活时间
	seconds为负数:默认值
	seconds为零:删除cookie信息

3.tomcat8之后支持存储中文数据,不支持特殊字符(例如空格)
若要进行特殊字符的存储,则需要编解码URL码

String URLEncoder.encode(String str,编码集)//编码
String URLDecoder.decode(String str,编码集)//解码

4.cookie获取范围
*1.在一个tomcat服务器中,部署了多个web项目,默认情况下cookie不能共享
可以通过设置cookie的获取范围,来共享

setPath(String path)//默认情况下,是当前的虚拟目录,需要共享,可将path设置为“/”

*2.不同的tomcat服务器间cookie共享
设置域名,如果设置一级域名相同,那么多个服务器之间cookie可以共享

setDomain(String path);

特点
1.cookie存储在客户端浏览器,防卫级别较低,数据容易丢失篡改
2.浏览器对于单个cookie的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
作用
1.一般用于存储少量的不太敏感的数据
2.在不登录的情况下,完成服务器对客户端的身份识别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值