1. คุกกี้คืออะไร? ความคิดเห็นของชาวเน็ต Baidu
เพียงแค่ใส่คุกกี้เป็นชิ้นส่วนของข้อมูลที่เก็บไว้ชั่วคราวบนคอมพิวเตอร์ของคุณโดยเซิร์ฟเวอร์เพื่อให้เซิร์ฟเวอร์สามารถใช้มันเพื่อระบุคอมพิวเตอร์ของคุณ เมื่อคุณท่องเว็บไซต์เว็บเซิร์ฟเวอร์จะส่งข้อมูลจำนวนเล็กน้อยเพื่อวางไว้ในคอมพิวเตอร์ของคุณ เมื่อคุณเยี่ยมชมเว็บไซต์เดียวกันในครั้งต่อไปเว็บเซิร์ฟเวอร์จะตรวจสอบก่อนว่ามีข้อมูลคุกกี้ใด ๆ ที่ถูกทิ้งไว้เบื้องหลังครั้งที่แล้วหรือไม่ ถ้าเป็นเช่นนั้นผู้ใช้จะถูกตัดสินตามเนื้อหาในคุกกี้และส่งเนื้อหาหน้าเว็บเฉพาะให้คุณ
2. คุกกี้อยู่ที่ไหน?
3. คุกกี้สามารถลบได้หรือไม่?
4. หลักการดำเนินการคุกกี้
ครั้งแรกที่ฉันขอเบราว์เซอร์ในร้านคุกกี้ของเบราว์เซอร์ไม่มีคุกกี้
การเยี่ยมชมครั้งแรกไม่มีคุกกี้ เบราว์เซอร์เพิ่มส่วนหัวคำขอคุกกี้ลงในข้อความคำขอ HTTP เพื่อส่งคุกกี้กลับไปยังเว็บเซิร์ฟเวอร์ เบราว์เซอร์จะเก็บข้อมูลส่วนของคุกกี้ในรูปแบบของคู่ "ชื่อ/ค่า" (คู่ชื่อชื่อ) ในครั้งต่อไปที่คุณเข้าถึงเว็บเซิร์ฟเวอร์จะเพิ่มส่วนหัวการตอบกลับแบบตั้งค่าไว้ในข้อความตอบกลับ HTTP เพื่อส่งข้อมูลคุกกี้ไปยังเบราว์เซอร์
มาดูคุกกี้ด้วยความเป็นจริงกันเถอะ
สร้าง cookie.jsp, set session = "false" เพื่อการสังเกตง่ายๆ
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8" เซสชัน = "false"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "content =" text/html; charset = utf-8 "> <title> คุกกี้ ("ชื่อ", "wyf"); response.addcookie (คุกกี้);%> </body> </html>ก่อนอื่นเราเข้าถึงไฟล์ cookie.jsp ให้ป้อนใน IE
http: // localhost: 8080/day01/cookie.jsp
ในส่วนหัวคำขอคุณจะเห็นว่าการเยี่ยมชมครั้งแรกไม่ได้พกคุกกี้
ในส่วนหัวการตอบกลับจะถูกส่งกลับไปที่ Set-Cookie และบันทึกไว้ในร้านคุกกี้ท้องถิ่นของเบราว์เซอร์
เราเข้าถึงไฟล์ cook.jsp เป็นครั้งที่สองเพื่อดูว่ามีการเปลี่ยนแปลงใด ๆ
ในส่วนหัวคำขอคุณจะเห็นว่าการเข้าถึงเป็นคำขอที่มีคุกกี้จากพื้นที่จัดเก็บคุกกี้ท้องถิ่นของเบราว์เซอร์
ต่อไปนี้เป็นส่วนหัวการตอบกลับ:
มาใช้กราฟแบบโต้ตอบเพื่อทำความเข้าใจกลไกคุกกี้:
มาดูการสร้างและการซื้อคุกกี้กันเถอะ
รหัสใน cookie.jsp หมายถึง: หากไม่มีคุกกี้ในคำขอมันจะถูกสร้างและส่งคืน หากคำขอมีคุกกี้มันจะส่งออกคู่คีย์ค่าคุกกี้ (ค่าชื่อ)
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8" เซสชัน = "false"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "content =" text/html; charset = utf-8 "> <title> request.getCookies (); ถ้า (คุกกี้! = null && cookies.length> 0) {สำหรับ (คุกกี้คุกกี้: คุกกี้) {out.print (cookie.getName ()+":"+cookie.getValue (); คุกกี้ ("ชื่อ", "wyf"); response.addcookie (คุกกี้);}%> </body> </html>ครั้งแรก
การเยี่ยมครั้งที่สอง
การดำเนินการข้างต้นคือเราต้องปิดเบราว์เซอร์อีกครั้ง ทำไมเราถึงดีบัก?
เพราะโดยค่าเริ่มต้นคุกกี้เป็นคุกกี้ระดับเซสชันที่เก็บไว้ในเคอร์เนลของเบราว์เซอร์และผู้ใช้จะถูกลบหลังจากออกจากเบราว์เซอร์ หากคุณต้องการให้เบราว์เซอร์เก็บคุกกี้ไว้บนดิสก์คุณต้องใช้ Maxage ซึ่งในไม่กี่วินาที
มาดูคุกกี้ถาวร
<%คุกกี้ [] คุกกี้ = request.getCookies (); ถ้า (คุกกี้! = null && คุกกี้ความยาว> 0) {สำหรับ (คุกกี้คุกกี้: คุกกี้) {out.print (Cookie.getName ()+":" Cookie.getValue (); คุกกี้ ("ชื่อ", "wyf"); cookie.setmaxage (30); response.addcookie (คุกกี้);}%>COOKIE.SETMAXAGE (30); ตั้งค่าเป็น 30 วินาทีดังนั้นฉันจะไม่ถ่ายภาพหน้าจอที่นี่ แค่บอกว่ามันอยู่ภายใต้ชื่อของคุณ หากคุณไม่มีคุกกี้เป็นครั้งแรกคุณสามารถสร้างคุกกี้เป็นครั้งที่สอง หากคุณไม่มีคุกกี้เป็นครั้งที่สองคุณสามารถปิดเบราว์เซอร์และเข้าถึงได้ภายใน 30 วินาที คุณยังคงแจ้งคุกกี้สำหรับคู่คีย์-ค่าแทนพรอมต์ก่อนหน้านี้คุณไม่มีคุกกี้สำหรับคุกกี้สำหรับก่อนหน้านี้ คุณไม่มีคุกกี้สำหรับคุกกี้สำหรับก่อนหน้านี้
เข้าสู่ระบบอัตโนมัติ
เข้าสู่ระบบ.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "content =" text/html; charset = utf-8 "> <title> method = "post"> name: <input type = "text" name = "name"/> <input type = "subment" value = "sumit" // </form> </body> </html>
success.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8" เซสชัน = "false"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 "http://www.w3.org/tr/html4/loose.dtd"><html><head> <meta http-equiv =" content-ype "content =" text/html; charset = utf-8 "> <title> จัดเก็บข้อมูลในคุกกี้และตั้งค่าเวลาของสตริงคุกกี้ = request.getParameter ("ชื่อ"); ถ้า (ชื่อ! = null &&! name.trim (). เท่ากับ ("")) {คุกกี้คุกกี้ = คุกกี้ใหม่ ("namecookie", cookie.setMaxage (60); คุกกี้และอ่านข้อมูลผู้ใช้จากคุกกี้ ถ้ามีให้พิมพ์คุกกี้ข้อความต้อนรับ [] cookies = request.getCookies (); ถ้า (คุกกี้! = null && คุกกี้ความยาว> 0) {สำหรับ (คุกกี้คุกกี้: คุกกี้) {String cookiename = cookie.getName (); if ("namecookie" ! = null &&! name.trim (). equals ("")) {out.print ("สวัสดี" + ชื่อ);} else {// ถ้าไม่มีพารามิเตอร์คำขอและไม่มีคุกกี้ ครั้งแรกที่คุณเยี่ยมชม http: // localhost: 8080/day01/login.jsp ให้ป้อนค่าพารามิเตอร์ชื่อและส่ง ใน Success.jsp ก่อนอื่นรับค่าชื่อพารามิเตอร์ที่ส่ง หากไม่ใช่ NULL ให้ตั้งค่าคุกกี้โดยตรงให้บันทึกค่าชื่อพารามิเตอร์แล้วส่งออกค่าพารามิเตอร์ชื่อบนหน้า เมื่อคุณเยี่ยมชมครั้งที่สองคุณป้อน http: // localhost: 8080/day01/success.jsp,
ตั้งแต่เวลานี้เรามีค่าชื่อพารามิเตอร์เราจะต้องได้รับค่าจากค่าของค่าของคุกกี้จากนั้นแสดงเอาต์พุต
แสดงประวัติการช็อปปิ้งล่าสุด
books.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "content =" text/html; charset = utf-8 "> <title> href = "book.jsp? book = javaweb"> javaweb </a> <a href = "book.jsp? book = java"> java </a> <a href = "book.jsp? href = "book.jsp? book = javaScript"> javaScript </a> <a href = "book.jsp? book = Android"> Android </a> <a href = "book.jsp? หนังสือที่กรองถ้า cookiename คือ atguigu_book_ มันเป็นไปตามเงื่อนไขถ้า (คุกกี้! = null && cookies.length> 0) {สำหรับ (คุกกี้ C: คุกกี้) {String cookiename = c.getName (); ถ้า (cookiename.startswith ("safly") {// cookieVieValueout.println (c.getValue ()); out.print ("<br>");}}}%> </body> </html>book.jsp
<%@page import = "java.util.arraylist"%> <%@page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! "http://www.w3.org/tr/html4/loose.dtd"><html><head> <meta http-equiv =" content-ype "content =" ข้อความ/html; charset = utf-8 "> <title> %> <br> <br> <a href = "books.jsp"> return </a> < %string book = request.getParameter ("book"); // กำหนดคุกกี้ที่จะลบคุกกี้ [] คุกกี้ = request.getCookies (); // บันทึกคุกกี้ทั้งหมด คุกกี้ที่ตรงกับหนังสือที่เข้ามาคุกกี้ Tempcookie = null; ถ้า (คุกกี้! = null && cookies.length> 0) {สำหรับ (คุกกี้ C: คุกกี้) {String cookiename = c.getName (); ถ้า cookiename.startswith if (c.getValue (). เท่ากับ (หนังสือ)) {out.print ("c.getValue (). เท่ากับ (หนังสือ)"); tempcookie = c;}}}}} // เลือกหนังสือ 5 เล่มนอกเหนือจากหนังสือ 5 เล่มนี้ (bookcookies.size ()> = 5 && //out.print("tempcookie == null ");} // หากอยู่ในนั้นลบหนังสือเล่มนี้ให้ลบคุกกี้ที่ซ้ำกันในรายการและส่งกลับถ้า (tempcookie! = null) {tempcookie.setMaxage (0); Response.addcookie (Tempcookie);} // ส่งคืนหนังสือที่ส่งผ่านจาก Books.jsp เป็นคุกกี้คุกกี้คุกกี้ = คุกกี้ใหม่ ("safly"+หนังสือ, หนังสือ); Response.addcookie (Cook);%> </body> </html>มาพูดคุยเกี่ยวกับความสัมพันธ์เชิงตรรกะ:
ใน Books.jsp ด้านล่างเป็นรายการหนังสือ
Javaweb
ชวา
คำพยากรณ์
อาแจ็กซ์
จาวาสคริปต์
Android
jbpm
ฉันสุ่มเลือกลิงค์ (เช่น Javaweb) เพื่อข้ามไปที่ Book.jsp ครั้งแรกที่ฉันเข้าถึงมันไม่มีคุกกี้ดังนั้นฉันจึงเรียกวิธีการต่อไปนี้ของ book.jsp และสร้างคุกกี้ ในหน้า book.jsp คลิกกลับเพื่อกลับไปที่ books.jsp และนำ Cookievealue นำโดย cooks.jsp แล้วแสดงรายการหนังสือที่เลือก
คุกกี้คุก = คุกกี้ใหม่ ("safly"+หนังสือ, หนังสือ); response.addcookie (คุก); ตอนนี้เรากลับไปที่ Books.jsp และได้เลือกหนังสือ Javaweb เรากำลังเลือกหนังสือ (สมมติว่า Java) จากนั้นกระโดดไปที่ Books.jsp ในขณะนี้เราจะนำคุกกี้ (มันส่งถึงฉันเมื่อ Javaweb ถูกเลือกเป็นครั้งแรกในการเข้าถึง Books.jsp) ค่าสำคัญของคุกกี้นี้คือ saflyjavawebjavaweb แต่อะไรนะ? การเลือกหนังสือเล่มที่สอง Java ไม่ได้มาพร้อมกับคุกกี้ (ไม่มี saflyjava)
จากนั้นป้อน cooks.jsp
if (cookiename.startswith ("safly")) {bookcookies.add (c);}ดังนั้นใส่ saflyjavawebjavaweb ลงในหนังสือเล่มนี้ (จัดเก็บรายการหนังสือที่เลือก) จากนั้น Saflyjavajava จะถูกสร้างขึ้น เมื่อคุณคลิกที่ Renturn ให้ cookies.jsp ย้อนกลับ
- - - - เมื่อเลือกหนังสือสำหรับครั้งที่ 3, 4 และ 5 ครั้งมันเป็นกระบวนการเดียวกัน หากคุณเลือกหนังสือ 5 เล่มใน Books.jsp วิธีจัดการกับมันเมื่อเลือกหนึ่งใน 5 เล่มเหล่านี้?
C.GetValue (). เท่ากับ (หนังสือ) เพื่อรับหนังสือที่เลือก เราจำเป็นต้องลบคุกกี้นี้แล้วเพิ่มอีกครั้งและส่งกลับไปยังรหัส cookies.jsp ดังต่อไปนี้:
Tempcookie.setMaxage (0); Response.addcookie (Tempcookie);
หากคุณเลือกหนังสือ 5 เล่มใน Books.jsp และเลือกหนังสือเล่มที่ 6 ที่ไม่ใช่หนังสือ 5 เล่มวิธีจัดการกับหนังสือเล่มนี้?
มาเพียง Tempcookie = bookcookies.get (0); นำหนังสือเล่มแรกของหนังสือ 5 เล่มแล้ว Tempcookie.setMaxage (0); ลบคุกกี้แรกจากนั้นสร้างคุกกี้กลับไปที่ cookies.jsp
นี่คือภาพหน้าจอบางส่วน:
เส้นทางการกระทำของคุกกี้
cookie2.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> <ชื่อเรื่อง> request.getCookies (); ถ้า (คุกกี้! = null && cookies.length> 0) {สำหรับ (คุกกี้คุกกี้: คุกกี้) {ถ้า ("cookiepath" .equals (cookie.getName ())) null) {out.print (cookieViewalue);} else {out.print ("ไม่มีคุกกี้ที่ระบุ");}%> </body> </html>writercookie.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-ype "content =" ข้อความ/html; charset = utf-8 "> <title> ไดเรกทอรีปัจจุบัน แต่ไม่สามารถดำเนินการบนไดเรกทอรีก่อนหน้าของไดเรกทอรีปัจจุบัน // สามารถตั้งค่าขอบเขตของคุกกี้ผ่าน setPath/แสดงถึงไดเรกทอรีรากของไซต์คุกกี้ = คุกกี้ใหม่ ("cookiepath", "cookiepathvalue"); cookie.setpath cookie2.jsp </a> </body> </html>ถึง cookie2.jsp คือ cookie2.jsp ที่เข้าถึงไดเรกทอรี writercookie.jsp บน
ข้างต้นคือการพัฒนา Javaweb โดยใช้คุกกี้เพื่อสร้าง - รับ - การคงอยู่การเข้าสู่ระบบอัตโนมัติบันทึกการช็อปปิ้งและเส้นทางฟังก์ชั่น ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!