关于cookie的使用

状态管理与cookie

http协议是无状态的,不能保存每次提交的信息
如果用户发来一个请求,服务器无法知道它和上一次请求是否有联系
将浏览器与服务器的多次交互当作一个整体来处理,将数据保存下来

客户端状态管理(将状态保存在客户端):cookie技术
服务器端状态管理(将状态保存在服务器端):session技术

cookie:服务器响应给浏览器的一个数据
一个cookie由name 和value组成

cookie的使用

1.创建cookie

可以发送多个cookie给客户端对象

	//1.服务端创建cookie对象
    Cookie cookie=new Cookie("username", "zhangsan");
    cookie.setPath("");//设置路径
    cookie.setMaxAge(-1);// 设置有效时间  >0,单位秒   =0浏览器关闭  <0 内存存储 默认-1
    	//2.将cookie响应给客户端
    resp.addCookie(cookie);

查看cookie:
1.检查->选中NetWork->Headers
如下图所示:
在这里插入图片描述
2.在浏览器设置中查看localhost下的cookie
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.获取cookie

        //通过request对象获取所有cookie
		Cookie[] cookies=req.getCookies();
		//2.通过循环遍历cookie
		if(cookies !=null){
			for (Cookie cookie : cookies) {
		       System.out.println(cookie.getName()+":"+cookie.getValue());
		}
		}

控制台中可打印出如下cookie信息:
在这里插入图片描述

3.修改cookie

cookie的名称和路径一致即可修改

只有name和path均一致时才会覆盖,达到修改的效果

4.cookie编码与解码

cookie默认不支持中文,需要编码才能防止中文乱码问题
当cookie保存的为中文时如下:

	 Cookie cookie=new Cookie("姓名", "宋先慧");
     resp.addCookie(cookie);

将会发生500错误
在这里插入图片描述
创建带中文的cookie:

 Cookie cookie=new Cookie(URLEncoder.encode("姓名","utf-8"),URLEncoder.encode("宋先慧","utf-8"));
 resp.addCookie(cookie);

解码带中文的cookie:

System.out.println(URLDecoder.decode(cookie.getName(), "UTF-8")+":"+URLDecoder.decode(cookie.getValue(), "UTF-8"));

cookie大小受限制
cookie易被篡改,存在安全隐患

什么是cookies呢,Cookies是一个储存于浏览器目录中的文本文件,记录你访问一个特定站点的信息,且只能被创建这个Cookies的站点读回,约由255个字符组成,仅占4KB硬盘空间。当用户正在浏览某站点时,它储存于用户机的随机存取存储器RAM中,退出浏览器后,它储存于用户的硬盘中。储存Cookies中的大部分信息是普通的,如当你浏览一个站点时,此文件记录了每一次的击键信息和被访站点的地址等。但是许多Web站点使用Cookies来储存针对私人的数据,如:注册口令、用户名、信用卡编号等,即所谓的"追踪cookies",危害绝不亚于木马。 Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。 软件简介: IECookiesView是一个专门用来查看IECookies内容的工具, 它可以帮你搜寻并显示出你计算机中所有Cookies档案的数据,包括是哪一个网站写入Cookies的,内容有什么,写入的时间日期及此Cookies的有效期限等等资料。 你是否常常怀疑一些网站写入Cookies内容到你的计算机中是否会对你造成隐私的侵犯?使用本软件就能知道这些Cookies的内容都是些什么,如此这般,你心里就有底了,就该怎么做了。 此软件只对IE浏览器的Cookies有效,而且多多少少有刺探隐私的"嫌疑",所以,个别灵敏度高的杀毒软件会报毒,请留意!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值