คุกกี้ใน JSP พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
คุกกี้ JSP คือไฟล์ข้อความขนาดเล็กที่จัดเก็บไว้ในเบราว์เซอร์ของลูกค้า ซึ่งช่วยให้แอปพลิเคชัน JSP ทำงานได้อย่างมีประสิทธิภาพ tracสามารถจัดการเซสชัน k รายการ จดจำการตั้งค่าของผู้ใช้ และปรับแต่งการตอบสนองในคำขอ HTTP หลายรายการโดยใช้ API javax.servlet.http.Cookie และส่วนหัวการตอบสนองมาตรฐาน

คุกกี้ JSP คืออะไร?
คุกกี้ JSP คือไฟล์ข้อความขนาดเล็กที่เว็บเซิร์ฟเวอร์แบบ JSP ขอให้เบราว์เซอร์ของลูกค้าจัดเก็บไว้ในอุปกรณ์ของผู้ใช้ เนื่องจาก HTTP เป็นโปรโตคอลแบบไร้สถานะ คุกกี้ JSP จึงเป็นวิธีที่ง่ายและได้มาตรฐานในการจดจำข้อมูลระหว่างการร้องขอ เช่น สถานะการเข้าสู่ระบบ การเลือกภาษา ธีม หรือร้านค้าping รหัสระบุตะกร้าสินค้า
- คุกกี้ JSP คือไฟล์ข้อความธรรมดาที่เบราว์เซอร์จัดเก็บไว้ในเครื่องไคลเอ็นต์
- พวกเขาคุ้นเคยกับ tracข้อมูล k สำหรับการจัดการเซสชัน การปรับแต่งส่วนบุคคล และการวิเคราะห์
- JSP รองรับคุกกี้ HTTP ผ่านเทคโนโลยี Servlet และคลาส javax.servlet.http.Cookie ที่อยู่เบื้องหลัง
- คุกกี้ JSP คือ transmitted ภายในส่วนหัวของคำขอและคำตอบ HTTP ในทุกคำขอที่ตรงกัน
- เมื่อตั้งค่าเบราว์เซอร์ให้ยอมรับคุกกี้ เบราว์เซอร์จะจัดเก็บคุกกี้ไว้ในดิสก์จนกว่าจะถึงวันหมดอายุที่ตั้งไว้โดย setMaxAge
เหตุใดจึงต้องใช้คุกกี้ JSP?
นักพัฒนา JSP อาศัยคุกกี้เนื่องจากคำขอ HTTP แต่ละรายการเป็นอิสระต่อกัน หากไม่มีคุกกี้ใน JSP เซิร์ฟเวอร์จะไม่ทราบว่าคำขอสองรายการนั้นมาจากผู้เยี่ยมชมคนเดียวกัน คุกกี้ใน JSP ช่วยแก้ปัญหานี้ได้โดยใช้สถานะฝั่งเซิร์ฟเวอร์น้อยที่สุด
- เซสชั่น tracกษัตริย์: คุกกี้ JSESSIONID เชื่อมโยงการเข้าชมหน้าเว็บหลายหน้าเข้ากับเซสชันเชิงตรรกะเดียว
- ส่วนบุคคล: คุกกี้ JSP สามารถจัดเก็บการตั้งค่าภาษา ธีม หรือรูปแบบการแสดงผลได้
- ตัวช่วยในการยืนยันตัวตน: โดยปกติแล้ว โทเค็น "จดจำฉัน" และสถานะการเข้าสู่ระบบจะถูกจัดเก็บไว้ในคุกกี้ที่มีการเปิดใช้งานแฟล็ก HttpOnly และ Secure
- Analytics: คุกกี้ใน JSP จะบันทึกข้อมูลผู้เข้าชมซ้ำ แหล่งที่มา และเส้นทางการแปลงผู้เข้าชมเป็นลูกค้า
ประเภทของคุกกี้ JSP
- คุกกี้ถาวร: คุกกี้ JSP แบบถาวรจะถูกเก็บไว้ในอุปกรณ์ตามระยะเวลาที่กำหนดไว้ด้วย setMaxAge ซึ่งจะช่วยให้แอปพลิเคชันจดจำการตั้งค่าและรายละเอียดการเข้าสู่ระบบได้แม้ว่าจะรีสตาร์ทเบราว์เซอร์แล้วก็ตาม
- คุกกี้ที่ไม่คงอยู่ถาวร: คุกกี้ JSP แบบไม่ถาวร หรือที่เรียกว่าคุกกี้เซสชัน จะเก็บไว้ในหน่วยความจำของเบราว์เซอร์เท่านั้น และจะถูกลบออกเมื่อผู้ใช้ปิดเบราว์เซอร์ โดยส่วนใหญ่จะใช้สำหรับเซสชันที่มีอายุสั้น tracกษัตริย์.
วิธีการคุกกี้ JSP
คลาส javax.servlet.http.Cookie มีเมธอดต่อไปนี้ที่ใช้บ่อยที่สุดเมื่อทำงานกับคุกกี้ JSP
-
public void setDomain(String domain)
เมธอด `setCookie` ของ JSP นี้จะกำหนดโดเมนที่คุกกี้ของ JSP นั้นใช้บังคับ
-
สาธารณะ String getDomain()
เมธอด getCookie ของ JSP นี้จะส่งคืนโดเมนที่ JSP Cookie นั้นใช้งานอยู่
-
public void setMaxAge(int expiry)
ฟังก์ชันนี้ใช้กำหนดเวลาสูงสุดเป็นวินาทีก่อนที่คุกกี้ JSP จะหมดอายุ ค่าศูนย์จะลบคุกกี้ และค่าลบจะทำให้คุกกี้นั้นกลายเป็นคุกกี้ชั่วคราว
-
สาธารณะ int getMaxAge()
ฟังก์ชันนี้จะแสดงอายุสูงสุดของคุกกี้ JSP ในหน่วยวินาที
-
สาธารณะ String getName()
ฟังก์ชันนี้จะส่งคืนชื่อของคุกกี้ JSP
-
public void setValue(String value)
กำหนดค่าที่เชื่อมโยงกับคุกกี้ JSP
-
สาธารณะ String getValue()
ส่งคืนค่าที่เกี่ยวข้องกับคุกกี้ JSP
-
public void setPath(String path)
วิธีการตั้งค่าคุกกี้ใน JSP นี้จะตั้งค่าคุกกี้ URL เส้นทางที่คุกกี้ใช้บังคับ
-
สาธารณะ String getPath()
มันส่งคืน URL เส้นทางที่คุกกี้ JSP มีผลบังคับใช้
-
public void setSecure(boolean flag)
ฟังก์ชันนี้จะทำเครื่องหมาย JSP Cookie เพื่อให้ส่งผ่านการเชื่อมต่อ HTTPS ที่เข้ารหัสเท่านั้น
-
public void setComment(String cmt)
เนื้อหานี้อธิบายถึงวัตถุประสงค์ของ JSP Cookie
-
สาธารณะ String getComment()
ฟังก์ชันนี้จะส่งคืนความคิดเห็นที่อธิบายเกี่ยวกับ JSP Cookie
วิธีจัดการคุกกี้ JSP
การทำงานกับคุกกี้ JSP ประกอบด้วยสามขั้นตอนที่ทำซ้ำได้ โดยใช้รูปแบบเดียวกันสำหรับสถานะการเข้าสู่ระบบ การเปลี่ยนธีม และร้านค้าping เกวียน
- สร้างอ็อบเจ็กต์ JSP Cookie โดยใช้ตัวสร้าง Cookie
- กำหนดค่าคุณสมบัติของคุกกี้ โดยเฉพาะอายุสูงสุด เส้นทาง และแฟล็กความปลอดภัย
- ส่งคุกกี้ไปยังเบราว์เซอร์ผ่านส่วนหัวการตอบสนอง HTTP โดยใช้ response.addCookie
วิธีการสร้างคุกกี้ JSP
มีการสร้าง JSP Cookie ใหม่โดยการเรียกใช้ javax.servlet.http.Cookie ด้วยชื่อและค่า จากนั้น Cookie จะถูกแนบไปกับอ็อบเจ็กต์ response เพื่อให้เบราว์เซอร์จัดเก็บไว้
วิธีอ่านคุกกี้ JSP
ในการร้องขอครั้งต่อๆ ไป เบราว์เซอร์จะส่ง JSP Cookies ที่ตรงกันกลับไปยังเซิร์ฟเวอร์ หน้าเว็บจะอ่าน Cookies เหล่านั้นโดยการเรียกใช้ request.getCookies ซึ่งจะส่งคืนอาร์เรย์ของอ็อบเจ็กต์ Cookie จากนั้นแอปพลิเคชันจะวนซ้ำในอาร์เรย์ ค้นหา Cookie แต่ละตัวตามชื่อ และใช้ค่าของ Cookie นั้น
วิธีการลบคุกกี้ JSP
ในการลบคุกกี้ JSP เซิร์ฟเวอร์จะสร้างคุกกี้ใหม่ที่มีชื่อเดียวกัน ตั้งค่าเป็นสตริงว่าง เรียกใช้เมธอด setMaxAge ด้วยค่าศูนย์ และเพิ่มคุกกี้ใหม่นั้นลงในคำตอบ จากนั้นเบราว์เซอร์จะลบคุกกี้ที่จัดเก็บไว้ในคำตอบครั้งถัดไป
ตัวอย่างการใช้งานคุกกี้ใน JSP
ในตัวอย่าง JSP Cookies นี้ แอปพลิเคชันจะสร้างคุกกี้สองตัวสำหรับชื่อผู้ใช้และอีเมล เก็บรักษาไว้เป็นเวลาสิบชั่วโมง จากนั้นจึงอ่านค่ากลับมาในหน้าเว็บที่สองชื่อ action_cookie_main.jsp
Action_cookie.jsp
<%-- Action_cookie.jsp: input form for JSP Cookies demo --%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//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=ISO-8859-1"> <title>Guru Cookie</title> </head> <body> <form action="action_cookie_main.jsp" method="GET"> Username: <input type="text" name="username"> <br /> Email: <input type="text" name="email" /> <input type="submit" value="Submit" /> </form> </body> </html>
Action_cookie_main.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% Cookie username = new Cookie("username", request.getParameter("username")); Cookie email = new Cookie("email", request.getParameter("email")); username.setMaxAge(60*60*10); email.setMaxAge(60*60*10); // Add both the JSP Cookies in the response header. response.addCookie( username ); response.addCookie( email ); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Cookie JSP</title> </head> <body> <b>Username:</b> <%= request.getParameter("username")%> <b>Email:</b> <%= request.getParameter("email")%> </body> </html>
คำอธิบายของ Code
Action_cookie.jsp
Code บรรทัดที่ 10 ถึง 15: หน้านี้ประกาศแบบฟอร์มที่จะส่งไปยังไฟล์ action_cookie_main.jsp โดยมีช่องป้อนข้อมูลสองช่อง ได้แก่ ชื่อผู้ใช้และอีเมล เพื่อรวบรวมข้อมูลจากผู้ใช้ พร้อมด้วยปุ่มส่งข้อมูล
Action_cookie_main.jsp
Code บรรทัดที่ 6 ถึง 9: มีการสร้างอ็อบเจ็กต์ Cookie สองตัว ได้แก่ username และ email โดยใช้ request.getParameter เพื่ออ่านค่าที่ส่งมาจากฟอร์ม
Code บรรทัดที่ 12 ถึง 13: เมธอด setMaxAge จะถูกเรียกใช้ด้วยค่า 60 คูณ 60 คูณ 10 ซึ่งจะกำหนดอายุการใช้งานของ JSP Cookie แต่ละตัวเป็นสิบชั่วโมง
Code บรรทัดที่ 16 ถึง 17: คุกกี้สองตัวจะถูกแนบไปกับคำตอบโดยใช้ response.addCookie จากนั้นเบราว์เซอร์จะส่งคุกกี้เหล่านั้นกลับไปในการร้องขอครั้งถัดไป และเซิร์ฟเวอร์จะอ่านคุกกี้เหล่านั้นโดยใช้ request.getCookies หรือ request.getParameter สำหรับการร้องขอปัจจุบัน
เอาท์พุต
เมื่อคุณรันโค้ดข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้
เมื่อไฟล์ action_cookie.jsp ทำงาน เบราว์เซอร์จะแสดงช่องกรอกข้อมูลสองช่อง ได้แก่ ชื่อผู้ใช้และอีเมล หลังจากที่ผู้ใช้กรอกข้อมูลและคลิกปุ่มส่ง ไฟล์ action_cookie_main.jsp จะสร้างคุกกี้ JSP ที่ตรงกันบนเซิร์ฟเวอร์ จัดเก็บคุกกี้เหล่านั้นไว้ในฝั่งไคลเอนต์ และแสดงค่าเพื่อยืนยันว่าได้สร้างคุกกี้สำเร็จแล้ว
แนวทางปฏิบัติที่ดีที่สุดสำหรับคุกกี้ JSP
แอปพลิเคชันเว็บสมัยใหม่ควรปฏิบัติต่อ JSP Cookies ในฐานะข้อมูลที่มีความอ่อนไหวต่อความปลอดภัย แนวทางปฏิบัติต่อไปนี้สอดคล้องกับการใช้งาน Servlet 4.x และ Servlet 5.x ในปัจจุบัน
- ใช้ HttpOnly: ตั้งค่าคุกกี้การตรวจสอบสิทธิ์เป็น HttpOnly เพื่อป้องกันไม่ให้สคริปต์ฝั่งไคลเอ็นต์อ่านได้
- ใช้ระบบรักษาความปลอดภัย: ส่งคุกกี้ผ่าน HTTP เท่านั้นโดยเรียกใช้ setSecure(true)
- ใช้ SameSite: กำหนดค่าแอตทริบิวต์ SameSite (Lax หรือ Strict) ผ่านส่วนหัวของคอนเทนเนอร์หรือส่วนหัวของการตอบกลับ เพื่อลดความเสี่ยงจากการปลอมแปลงคำขอข้ามเว็บไซต์
- รักษามูลค่าให้มีขนาดเล็ก: เก็บตัวระบุไว้ในคุกกี้และเก็บข้อมูลไว้ในพื้นที่จัดเก็บข้อมูลฝั่งเซิร์ฟเวอร์
- กำหนดวันหมดอายุอย่างชัดเจน: ใช้คำสั่ง setMaxAge เพื่อให้การทำงานเป็นไปอย่างสม่ำเสมอในทุกเบราว์เซอร์


