Cookie trong JSP với ví dụ
⚡ Tóm tắt thông minh
JSP Cookies là những tệp văn bản nhỏ được lưu trữ trên trình duyệt của người dùng, giúp các ứng dụng JSP xử lý thông tin. track phiên, ghi nhớ tùy chọn người dùng và cá nhân hóa phản hồi trên nhiều yêu cầu HTTP bằng cách sử dụng API javax.servlet.http.Cookie và các tiêu đề phản hồi tiêu chuẩn.

Cookie JSP là gì?
JSP Cookies là những tập tin văn bản nhỏ mà máy chủ web dựa trên JSP yêu cầu trình duyệt của người dùng lưu trữ trên thiết bị của họ. Vì HTTP là một giao thức không trạng thái, JSP Cookies cung cấp một cách đơn giản, dựa trên tiêu chuẩn để ghi nhớ thông tin giữa các yêu cầu, chẳng hạn như trạng thái đăng nhập, lựa chọn ngôn ngữ, chủ đề hoặc cửa hàng.ping Mã định danh giỏ hàng.
- JSP Cookies là các tệp văn bản thuần túy được trình duyệt lưu trữ trên máy tính của người dùng.
- Họ đã quen với tracThông tin k dùng cho quản lý phiên, cá nhân hóa và phân tích.
- JSP hỗ trợ cookie HTTP thông qua công nghệ Servlet cơ bản và lớp javax.servlet.http.Cookie.
- Cookie JSP là transmitted bên trong tiêu đề yêu cầu và phản hồi HTTP trên mỗi yêu cầu phù hợp.
- Khi trình duyệt được cấu hình để chấp nhận cookie, nó sẽ lưu trữ chúng trên ổ đĩa cho đến ngày hết hạn được thiết lập bởi setMaxAge.
Tại sao nên sử dụng cookie JSP?
Các nhà phát triển JSP dựa vào cookie vì các yêu cầu HTTP độc lập với nhau. Nếu không có cookie trong JSP, máy chủ sẽ không biết hai yêu cầu đó thuộc cùng một khách truy cập. Cookie trong JSP giải quyết vấn đề này với trạng thái phía máy chủ tối thiểu.
- Phiên tracnhà vua: Cookie JSESSIONID kết nối nhiều lượt xem trang với một phiên làm việc duy nhất.
- Cá nhân hóa: Cookie JSP có thể lưu trữ các tùy chọn về ngôn ngữ, chủ đề hoặc bố cục.
- Các công cụ hỗ trợ xác thực: Mã xác thực và trạng thái đăng nhập thường được lưu trữ trong cookie với các cờ HttpOnly và Secure được bật.
- Phân tích: Cookie trong JSP ghi lại thông tin khách truy cập quay lại, nguồn giới thiệu và đường dẫn chuyển đổi.
Các loại cookie JSP
- Cookie liên tục: Cookie JSP cố định sẽ được lưu trữ trên thiết bị trong khoảng thời gian được thiết lập bằng hàm setMaxAge. Nó giúp ứng dụng ghi nhớ các tùy chọn và thông tin đăng nhập ngay cả khi trình duyệt khởi động lại.
- Cookie không lưu trữ lâu dài: Cookie JSP không lưu trữ lâu dài, còn được gọi là cookie phiên, chỉ tồn tại trong bộ nhớ trình duyệt và bị xóa khi người dùng đóng trình duyệt. Nó chủ yếu được sử dụng cho các phiên ngắn hạn. tracnhà vua.
Phương pháp cookie JSP
Lớp javax.servlet.http.Cookie cung cấp các phương thức sau đây, thường được sử dụng nhất khi làm việc với Cookie trong JSP.
-
public void setDomain(String domain)
Phương thức thiết lập cookie JSP này xác định tên miền mà cookie JSP áp dụng.
-
public String getDomain()
Phương thức get cookie của JSP này trả về tên miền mà cookie JSP áp dụng.
-
public void setMaxAge(int expiry)
Tham số này thiết lập thời gian tối đa tính bằng giây trước khi cookie JSP hết hạn. Giá trị bằng 0 sẽ xóa cookie và giá trị âm sẽ biến nó thành cookie phiên.
-
public int getMaxAge()
Hàm này trả về thời gian tồn tại tối đa của JSP Cookie tính bằng giây.
-
public String getName()
Nó trả về tên của JSP Cookie.
-
public void setValue(String value)
Thiết lập giá trị liên kết với Cookie JSP.
-
public String getValue()
Trả về giá trị được liên kết với Cookie JSP.
-
public void setPath(String path)
Phương thức thiết lập cookie này trong JSP sẽ thiết lập... URL Đường dẫn mà cookie này áp dụng.
-
public String getPath()
Nó trả về URL Đường dẫn mà JSP Cookie áp dụng.
-
public void setSecure(boolean flag)
Nó đánh dấu cookie JSP để chỉ gửi qua các kết nối HTTPS được mã hóa.
-
public void setComment(String cmt)
Nó mô tả mục đích của JSP Cookie.
-
public String getComment()
Nó trả về bình luận mô tả JSP Cookie.
Cách xử lý cookie trong JSP
Làm việc với JSP Cookies bao gồm ba bước lặp lại. Mẫu này được sử dụng cho trạng thái đăng nhập, chuyển đổi giao diện và cửa hàng.ping xe đẩy.
- Tạo đối tượng JSP Cookie bằng cách sử dụng hàm tạo Cookie.
- Cấu hình các thuộc tính của cookie, đặc biệt là thời hạn tối đa, đường dẫn và cờ bảo mật.
- Gửi cookie đến trình duyệt thông qua tiêu đề phản hồi HTTP bằng cách sử dụng response.addCookie.
Cách tạo cookie JSP
Một đối tượng JSP Cookie mới được tạo bằng cách khởi tạo javax.servlet.http.Cookie với tên và giá trị. Sau đó, cookie này được đính kèm vào đối tượng phản hồi để trình duyệt lưu trữ.
Cách đọc cookie JSP
Với mỗi yêu cầu tiếp theo, trình duyệt sẽ gửi các JSP Cookie phù hợp trở lại máy chủ. Trang web sẽ đọc chúng bằng cách gọi phương thức request.getCookies, phương thức này trả về một mảng các đối tượng Cookie. Sau đó, ứng dụng sẽ lặp qua mảng, tìm kiếm từng cookie theo tên và sử dụng giá trị của nó.
Cách xóa cookie JSP
Để xóa một JSP Cookie, máy chủ sẽ tạo một cookie mới có cùng tên, đặt giá trị của nó thành một chuỗi rỗng, gọi hàm setMaxAge với giá trị 0, và thêm nó vào phản hồi. Sau đó, trình duyệt sẽ xóa cookie đã lưu trữ trong phản hồi tiếp theo.
Ví dụ về Cookie trong JSP
Trong ví dụ về Cookies trong JSP này, ứng dụng tạo ra hai cookie cho tên người dùng và email, giữ chúng hoạt động trong mười giờ, sau đó đọc lại các giá trị trên một trang thứ hai có tên là 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>
Giải thích về Code
Action_cookie.jsp
Code Dòng 10 đến 15: Trang này khai báo một biểu mẫu được gửi đến action_cookie_main.jsp. Hai trường nhập liệu, tên người dùng và email, thu thập dữ liệu từ người dùng cùng với một nút gửi.
Action_cookie_main.jsp
Code Dòng 6 đến 9: Hai đối tượng Cookie, username và email, được tạo bằng cách sử dụng request.getParameter để đọc các giá trị được gửi bởi biểu mẫu.
Code Dòng 12 đến 13: Phương thức setMaxAge được gọi với 60 nhân 60 nhân 10, thiết lập thời gian tồn tại của mỗi JSP Cookie là mười giờ.
Code Dòng 16 đến 17: Hai cookie này được đính kèm vào phản hồi bằng phương thức response.addCookie. Trình duyệt sau đó gửi chúng trở lại trong các yêu cầu tiếp theo, và máy chủ đọc chúng bằng cách sử dụng request.getCookies hoặc request.getParameter cho yêu cầu hiện tại.
Đầu ra
Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả như sau.
Khi action_cookie.jsp được thực thi, trình duyệt sẽ hiển thị hai trường: tên người dùng và email. Sau khi người dùng điền thông tin và nhấp vào Gửi, action_cookie_main.jsp sẽ tạo các JSP Cookie tương ứng trên máy chủ, lưu trữ chúng trên máy khách và hiển thị các giá trị, xác nhận rằng cookie đã được tạo thành công.
Các phương pháp tốt nhất để sử dụng cookie trong JSP
Các ứng dụng web hiện đại nên coi JSP Cookies là dữ liệu nhạy cảm về bảo mật. Các thực tiễn sau đây phù hợp với các triển khai Servlet 4.x và Servlet 5.x hiện tại.
- Hãy sử dụng HttpOnly: Đánh dấu cookie xác thực là HttpOnly để các tập lệnh phía máy khách không thể đọc chúng.
- Hãy sử dụng chế độ bảo mật: Chỉ gửi cookie qua HTTPS bằng cách gọi setSecure(true).
- Sử dụng SameSite: Cấu hình thuộc tính SameSite (Lax hoặc Strict) thông qua tiêu đề container hoặc phản hồi để giảm thiểu tấn công giả mạo yêu cầu xuyên trang (CSRF).
- Giữ giá trị ở mức nhỏ: Lưu trữ mã định danh trong cookie và giữ dữ liệu trong bộ nhớ phía máy chủ.
- Đặt thời hạn hết hạn cụ thể: Hãy sử dụng setMaxAge để có hành vi nhất quán trên các trình duyệt khác nhau.


