Javaweb cookie

概述:

cookie是以键值对的形式存在的,储存在客户端的内存或者硬盘中(设置cookie过期时间的时候存放在硬盘,否者存放在内存中),由服务器发送给客户端,客户端下次访问的时候服务器的时候,服务器可以通过请求协议获取上次储存的内容

优点:

  • 可配置到期时间,数据可以永久保存
  • 不需要服务器资源,数据保存在客户端
  • 简单性,是以键值对的形式存在的

缺点

  • 大小受到限制,每个浏览器对同一个域名所包含的cookie个数和不同域名的cookie个数是有限制的,不同的浏览器限制的个数不同,但是单个cookie的大小都是限制在4kb以内
  • 用户可能会禁止浏览器接收cookie
  • 多人共用一台计算机(例如导致用户名和密码不安全等问题)
  • cookie使用明文(未加密)传递的,安全性低
  • cookie会被附加在每次Http请求协议中,增加流量

cookie的常用方法

  • getMaxAge()/setMaxAge()
    读取/设置cookie到期时间,单位是秒,如果值是0,则表示删除对应的cookie;若值是负数,则表示该cookie仅对此次浏览会话有限(默认值是-1,关闭浏览器,cookie删除);
  • getName()
    获取cookie的名称,不存在setName()方法
  • getValue()/setValue()
    读取/设置cookie关联的值(如果重新设置了某cookie的值,需要用addCookie()方法重新发送给客户端

先写一个servlet用于向客户端发送cookie

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*键或者值含有中文的情况下使用这种,中文采用的 是unicode编码,而英文采用的是ASCII编 码,
		所以当COOkie保存中文的时候需要对中文进行编码,而且从Cookie中取出内容 的时候也要进行解码 */
		String value=URLEncoder.encode("中文", "utf-8");//设置编码格式
		Cookie cookie=new Cookie("name",value);//创建cookie实例对象
		response.addCookie(cookie);//将Cookies实例对象,添加到Response对象中
		
		//键或者值不含有中文的情况可以使用这种方法简化一点,当然不含有中文也可以使用上面那种方法
		/*Cookie cookie=new Cookie("name","xingmeng");
		response.addCookie(cookie);*/
	}

创建另一个Servlet用于获取服务器端向客户端发送的Cookie信息

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Cookie[] cookies=request.getCookies();//通过Request对象获取上次服务器端发送的Cookie信息
		if(cookies!=null){//判断Request对象中的Cookie是否存在
			for(Cookie cookie:cookies){//遍历Request对象中的所有Cookie
				if(cookie.getName().equals("name")){//判断Cookie的名称是否是name
					String value=URLDecoder.decode(cookie.getValue(),"utf-8");//把value解码成utf-8格式再打印
					System.out.print(value);//打印在控制台
				}
			}
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值