cookie 在平時生活中的運用
存儲用戶在網頁上的登陸信息,包括賬號和密碼。
有的網站,登陸的時候,會出現一個選項,問你是否要一周內或者一個月內保持登陸狀態。
如果你選了,那么一周之內,都不需要再輸入賬號密碼。
這個功能,就是靠cookie來實現的
cookie原理示意圖
什么是cookie
Cookie是一種瀏覽器和服務器交互數據的方式。
Cookie是由服務器端創建,但是不會保存在服務器。
創建好之后,發送給瀏覽器。瀏覽器保存在用戶本地。
下一次訪問網站的時候,就會把該Cookie發送給服務器。
服務器端創建cookie
在web目錄下創建一個文件 setCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%> <% Cookie c = new Cookie("name", "Gareen"); <%--創建了一個cookie,名字是"name" 值是"Gareen" -- %> c.setMaxAge(60 * 24 * 60); <%-- 表示這個cookie可以保留一天,如果是0,表示瀏覽器一關閉就銷毀 -- %> c.setPath("/"); <%-- Path表示訪問服務器的所有應用都會提交這個cookie到服務端-- %><%--如果其值是 /a, 那么就表示僅僅訪問 /a 路徑的時候才會提交 cookie -- %>
response.addCookie(c); <%--通過response把這個cookie保存在瀏覽器端 -- %>
%> <a href="getCookie.jsp">跳轉到獲取cookie的頁面</a>
訪問地址:http://127.0.0.1/setCookie.jsp
通過HTTP調試工具也可以在Cookies這一欄看到
把該Cookie發送給服務器
在web目錄下創建文件getCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%> <% Cookie[] cookies = request.getCookies();<%-- 表示獲取所有瀏覽器傳遞過來的cookie-- %>
if (null != cookies) <%--如果瀏覽器端沒有任何cookie,得到的Cookie數組是null -- %>
for (int d = 0; d <= cookies.length - 1; d++) {<%--遍歷所有的cookie-- %>
out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");
}
%>
通過HTTP調試工具也可以看到瀏覽器在請求信息里提交了這個Cookie。
注; JSESSIONID 這個不是我們自己設置的cookie,這是tomcat設置的cookie