
image.png
一、Cookie
(1)Cookie 基本使用
image.png
發(fā)送 cookie
package com.test.web;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 發(fā)送cookie demo
@WebServlet("/servletSetCookie")
public class ServletSetCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
// 創(chuàng)建cookie對(duì)象
Cookie cookie = new Cookie("myCookie", "123123");
// 發(fā)送cookie
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
this.doGet(req, resp);
}
}
獲取cookie
package com.test.web;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// 獲取 cookie demo
@WebServlet("/servletGetCookie")
public class ServletGetCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
String name = cookie.getName();
if (name.equals("myCookie")) {
System.out.println("成功獲取到之前設(shè)置的cookie " + name + ":" + cookie.getValue());
break;
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
this.doGet(req, resp);
}
}
(2)Cookie 原理
image.png
設(shè)置cookie:后端服務(wù)通過 set-cookie:username=zs 響應(yīng)頭來告知瀏覽器創(chuàng)建一個(gè)名為username,值為zs的 cookie
獲取cookie:后端服務(wù)接收這次請(qǐng)求時(shí),在請(qǐng)求頭 cookie 里面獲取的所有cookie
(3)Cookie 細(xì)節(jié)
image.png
二、Session
(1)Session 基本使用
image.png
存儲(chǔ) Session
package com.test.web.session;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/servletSetSession")
public class ServletSetSession extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
// 獲取session對(duì)象
HttpSession session = req.getSession();
// 設(shè)置session
session.setAttribute("username", "張三");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
this.doGet(req, resp);
}
}
獲取 Session
package com.test.web.session;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/servletGetSession")
public class ServletGetSession extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){
// 獲取session對(duì)象
HttpSession session = req.getSession();
Object username = session.getAttribute("username");
System.out.println("成功獲取存儲(chǔ)的 username:" + username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){
this.doGet(req, resp);
}
}
(2)Session 原理
Session 是基于Cookie實(shí)現(xiàn)的,服務(wù)器會(huì)給客戶端存儲(chǔ)一個(gè) sessionid 的 cookie,瀏覽器每次請(qǐng)求的時(shí)候會(huì)自動(dòng)帶上這個(gè) sessionid 用于區(qū)分。
image.png
(3)Session 細(xì)節(jié)
image.png
image.png
三、Cookie和Session的區(qū)別
image.png
參考:黑馬java教程







