深入了解Cookie的形成过程

2022-08-18 12:36:45

先复习一下HTTP协议,即超文本传输协议的特点
1.支持clint/server模式
2.简单快速:客户向服务器请求服务的时候,只需要传送请求方法和路径。常用的又GET HEAD POST,
每种方法规定了客户与服务器练习的类型不同。由于HTTP协议简单,所以程序规模小,通讯速度快。
3.灵活:可以有Context-Type支持任意输出类型的对象
4.无连接:指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。节省了传输时间
5.无状态:对事务处理没有记忆能力,意味着一旦后续需要处理前面的信息,必须重传。

Cookie实际上是key-value格式呈现的。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

这里我通过setCookie创建了一个键值对为name和gareen的cookie
此处的setMaxAge可以填写负数,0,正数三种内容,此处表明是一天的时间
当为负数时,浏览器会在关闭后销毁cookie。
为0时,会 立刻删除cookie,一秒都不保存。
正数即代表时间。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"import="javax.servlet.http.Cookie"%><!DOCTYPE html><html><head><meta charset="UTF-8"><%
Cookie c=newCookie("name","Gareen");
c.setMaxAge(60*24*60);
c.setPath("/");
response.addCookie(c);%><a href="getCookie.jsp">跳转到cookie页面</a></head><body></body></html>

随后,使用了getCookies方法遍历了cookie数组得到所有的键值对,在response.addCookie()之后,服务器就不再拥有数据了,转而到用户这,保存在本地,访问时会提交保存的cookie信息。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><%
Cookie cookies[]=request.getCookies();if(cookies!=null){for(int i=0;i<cookies.length;i++){
		out.print(cookies[i].getName()+":"+cookies[i].getValue()+"<br>");}}%></body></html>

下图是总结出来的cookie原理图:
在这里插入图片描述

  • 作者:Vince_Wang1
  • 原文链接:https://blog.csdn.net/Vince_Wang1/article/details/103944318
    更新时间:2022-08-18 12:36:45