客户端 Cookie

前提

为什么需要 Cookie 和 Session,你必须了解 会话 和 http 协议;

会话

:为了实现某一个功能,客户端和服务器之间会产生多次的请求和响应,从客户端访问服务器开始,到最后访问服务器结束,客户端关闭为止,这期间产生的多次请求和响应加在一起就称之为是客户端和服务器之间的一次会话。(这就好像是你和朋友进行了一次会谈,这个会谈需要你和朋友进行对话,你是服务器,你朋友是客户端,你朋友发出请求,你的做出反应,会谈不可能是一句两句话,它会产生多种请求和响应,会谈提问结束,该过程就是一次会谈/会话)

HTTP协议

: http 协议中规定一次请求一次响应后断开连接,每一次请求都是一个崭新的请求,但是事实上,很多情况下都不可能一次请求一次响应解决你的问题(就好像你正在和朋友会谈一个问题,中途着急想去厕所必须离开,但是如果依据 HTTP协议,你重新回来的时候,就的从头开始问,那多浪费时间,所以出现了 Cookie 和 Session),Cookie 和 Session 就是类似解决这种方法,他会暂时存储临时数据,就是你去厕所回来之后,朋友继续讲就可以了。

Cookie

Cookie

: 将临时数据保存在客户端浏览器上,用户每次访问时,将会话的临时数据在请求中带给服务器;

原理

:Cookie 的原理是通过 Set-Cookie响应头 和 Cookie请求头 将会话中产生的数据保存在客户端,(客户端请求服务器,服务器其将需要保存的数据通过 Set-Cookie 响应头发给客户端,客户端收到后会将数据保存在浏览器的内部,当客户端再次请求服务器时,通过 Cookie 请求头将上次保存的数据在带给服务器,服务器通过 Cookie 头来获取数据,通过这种方式可以保存会话中产生的数据。)

优点

: Cookie 是将需要保存的数据保存在了客户端,是客户端技术,每个客户端各自保存各自的数据,再次访问服务器会带着自己的数据,每个客户端持有自己的数据,因此就不会胡乱了。

Cookie 操作

1.创建 Cookie

	  Cookie cookie = new Cookie(String name,String value);

2.添加 Cookie

		  response.addCookie(Cookie cookie);

3.获取 Cookie

	 	  Cookie [] cookie = request.getCookie();

4.存活 Cookie

		        	setMaxAge();

5.路径 Cookie

					setPath(String path);

实践(代码)

1.处理应答乱码

        //通俗点理解记忆
        // set 设置修改 contentType 内容类型
		response.setContentType("text/html;charset=utf-8");

2.获取用户本次请求所携带的 Cookie 上一次访问时间

        //首先再次理解 Cookie 原理:
        //Cookie是通过 Set-Cookie响应头 和 Cookie请求头 
        //将会话的数据保存在客户端(Sssion是将数据保存在服务器)
        //客户端请求服务器,服务器将需要保存的数据通过 Set-cookie响应头
        //发给客户端,客户端收到后会将数据保存在浏览器的内部。
        //当客户端再次请求服务器时,通过 Cookie请求头 将上次保存的数据在带给服务器,
        //服务器通过 Cookie 获取数据
		String lastname = request.getHeader("cookie");

3.返回信息

             //lastime 就相当于上次保存的数据 
			if(lastime == null){
			//如果lasttime 等于 null
			//页面反应 您是第一次访问
         response.getWriter().writer("您是第一次访问");
         
           //将新访问的时间记录
         String dateStr = new Date().toLocaleString();
         
         //将新的时间存入到响应头中
         response.setHeader("set-cookie",dateStr);
         
         
			}else{
			//如果存在 则输出 您上次访问的时间是 +  时间
        response.getWriter().writer("您上次访问的时间是:"+ lastTime);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值