java中Cookie详细介绍

1:什么是Cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),览器会将Cookie以key/value的形式保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器
在这里插入图片描述

2:发送Cookie:

首先我们需要创建Cookie对象,并且写入我们要共享的数据,接下来我们就可以设置Cookie的存活时间(默认单位是秒),最后使用response将Cookie发送到客户端

    public void setCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("redisKet", "content");
        //设置Maximum Age
        cookie.setMaxAge(1000);
        // 过期时间s (默认是-1 关闭浏览器失效)
		//cookie.setMaxAge(-1);
        //设置cookie路径为当前项目路径
        cookie.setPath(request.getContextPath());
        //cookie.setPath("/");
        //添加cookie
        response.addCookie(cookie);
    }

3:获取Cookie:

使用request获取Cookie数组,然后再对数组进行遍历,最后通过if筛选出你需要的cookie

    public void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String rediskt = "";
		//获取cookie数组
		Cookie[] cookies = request.getCookies();
		if (cookies != null && cookies.length > 0) {
		//遍历数组
			//for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("redisKet")){
    			//System.out.println(cookies[i].getValue());
			//}		
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals("redisKet")) {
					rediskt = cookie.getValue();
					break;
				}
			}
		}
    }

4:Cookie编码问题

1:在Cookie是中不能直接传输中文,如果你想要传输中文的话,首先要在你发送Cookie前先使用URL将中文进行编码,然后将编码后的数据发送到客户端

    public void setCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String content= "服务器传送的Cookie";
        content= URLEncoder.encode(value,"UTF-8");
        Cookie cookie = new Cookie("redisKet", content);
        //设置Maximum Age
        cookie.setMaxAge(1000);
        // 过期时间s (默认是-1 关闭浏览器失效)
		//cookie.setMaxAge(-1);
        //设置cookie路径为当前项目路径
        cookie.setPath(request.getContextPath());
        //cookie.setPath("/");
        //添加cookie
        response.addCookie(cookie);
    }

2:同理在获取Cookie的时候我们要将获取的数据进行URL解码

    public void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String rediskt = "";
		//获取cookie数组
		Cookie[] cookies = request.getCookies();
		if (cookies != null && cookies.length > 0) {
		//遍历数组
			//for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("redisKet")){
    			//System.out.println(cookies[i].getValue());
			//}
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals("redisKet")) {
					rediskt = cookie.getValue();
					rediskt = URLDecoder.decode(rediskt,"UTF-8");
					break;
				}
			}
		}
    }

5:Cookie的有效期

Cookie是保存在客户端的数据,所以如果不做设定,默认情况下是跟着客户端一起消失的,如果设置了setMaxAge(),将会以设置的数值为主,时间到了将会自动消失。

// 过期时间s (默认是-1 关闭浏览器失效)
		cookie.setMaxAge(-1);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值