Yêu cầu máy khách JSP

⚡ Tóm tắt thông minh

Yêu cầu từ phía máy khách và phản hồi từ phía máy chủ sử dụng các phần tử hành động JSP để điều khiển công cụ servlet. Trình duyệt gửi thông tin thông qua các tiêu đề HTTP, máy chủ trả về dòng trạng thái và các tiêu đề, và mã trạng thái HTTP báo cáo kết quả của mỗi yêu cầu.

  • 📨 Yêu cầu khách hàng: Trình duyệt gửi dữ liệu đến máy chủ thông qua tiêu đề yêu cầu HTTP, được đọc bởi HttpServletRequest.
  • 🧾 Tiêu đề yêu cầu: Accept, Accept-language, Connection, Cookie, Host và User-agent mô tả phía máy khách.
  • 📤 Phản hồi của máy chủ: HttpServletResponse trả về dòng trạng thái, tiêu đề phản hồi và tài liệu.
  • 🔧 Phương thức phản hồi: Các phương thức addHeader(), sendRedirect(), sendError() và setStatus() định hình phản hồi.
  • 🔢 Trạng thái Codes: Được chia thành các nhóm từ 100 đến 599; các nhóm phổ biến bao gồm 200, 301, 404 và 500.
  • 🧪 Ví dụ: Các trang JSP hoạt động bình thường sẽ đọc tiêu đề, thiết lập khoảng thời gian làm mới và gửi lỗi 404.

Yêu cầu máy khách JSP

Các hành động JSP sử dụng các cấu trúc trong cú pháp XML để điều khiển hành vi của công cụ servlet. Chúng ta sẽ tìm hiểu chi tiết hơn về các phần tử Hành động JSP khác nhau như yêu cầu của máy khách, phản hồi của máy chủ và mã trạng thái HTTP.

Yêu cầu máy khách JSP

  • Khi trang web được yêu cầu, nó sẽ gửi thông tin đến máy chủ web trong tiêu đề HTTP.
  • Chúng ta có thể sử dụng thông tin này bằng đối tượng HTTPServletRequest.
  • Thông tin do trình duyệt gửi được lưu trữ trong tiêu đề yêu cầu của yêu cầu HTTP.
  • Chúng tôi đang sử dụng các tiêu đề khác nhau để gửi thông tin đến đối tượng yêu cầu.

Tiêu đề trong JSP

Các tiêu đề khác nhau trong JSP được mô tả dưới đây:

Tiêu đề Mô tả Chi tiết Ví dụ
Chấp nhận Nó chỉ định các loại MIME mà trình duyệt hoặc ứng dụng khách khác có thể xử lý Hình ảnh/png hoặc hình ảnh/jpeg
Bộ ký tự chấp nhận Nó sử dụng bộ ký tự được trình duyệt sử dụng để hiển thị thông tin ISO-8859-1
Chấp nhận-Mã hóa Nó chỉ định loại mã hóa được trình duyệt xử lý Gzip hoặc nén
Ngôn ngữ chấp nhận Nó chỉ định ngôn ngữ được chỉ định của khách hàng En,en_us
cho phép Tiêu đề được khách hàng sử dụng khi cố gắng truy cập các trang web được bảo vệ bằng mật khẩu
Kết nối Nó cho biết liệu máy khách có thể xử lý các kết nối HTTP liên tục hay không (trình duyệt có thể truy xuất nhiều tệp) Cố sống đi
Thời lượng nội dung Áp dụng cho các yêu cầu đăng bài. Nó cung cấp kích thước của dữ liệu bài đăng theo byte
Cookie Trả lại cookie cho máy chủ (những cookie đã được gửi trước đó tới trình duyệt)
Máy chủ Chỉ định máy chủ và cổng của bản gốc. URL
Nếu sửa đổi kể từ Nó chỉ ra rằng nó chỉ yêu cầu một trang nếu nó đã được thay đổi hoặc sửa đổi
Nếu không sửa đổi kể từ Nó chỉ ra rằng nó chỉ yêu cầu một trang nếu nó chưa bị thay đổi hoặc sửa đổi
Người giới thiệu Chỉ ra URL tham khảo URL trang
Đại lý người dùng Xác định trình duyệt hoặc ứng dụng khách đưa ra yêu cầu

Các phương thức tiêu đề HTTP trong JSP

Các phương pháp sau được sử dụng để đọc tiêu đề HTTP trong trang JSP:

  1. Cookie[] getCookies() – trả về một mảng chứa các đối tượng cookie mà khách hàng đã gửi
  2. Bảng liệt kê getAttributionNames() – chứa liệt kê tên của các thuộc tính cho yêu cầu
  3. Phép liệt kê getHeaderNames() – Chứa danh sách liệt kê các tên tiêu đề.
  4. Liệt kê getParameterNames() – chứa bảng liệt kê nhận tên tham số trong yêu cầu.
  5. HttpSession getSession() – trả về phiên hiện tại được liên kết với yêu cầu hoặc nếu không có phiên thì nó sẽ tạo một phiên mới.
  6. Ngôn ngữ getLocale() – trả về ngôn ngữ ưa thích mà máy khách sẽ chấp nhận nội dung. Ngôn ngữ này đã được gán cho phản hồi. Theo mặc định, giá trị sẽ là ngôn ngữ mặc định của máy chủ.
  7. Đối tượng getAttribution(Tên chuỗi) – trả về giá trị của thuộc tính được đặt tên làm đối tượng.
  8. ServletInputStream getInputStream() – Truy xuất nội dung yêu cầu dưới dạng dữ liệu nhị phân.
  9. Chuỗi getAuthType() – trả về tên của sơ đồ xác thực để bảo vệ servlet
  10. Chuỗi getCharacterEncoding() – trả về tên của mã hóa ký tự được sử dụng trong nội dung yêu cầu.
  11. Chuỗi getContentType() – trả về kiểu MIME của nội dung yêu cầu.
  12. Chuỗi getContextPath() – trả về phần URI yêu cầu cho biết đường dẫn ngữ cảnh của URI
  13. Chuỗi getHeader(Tên chuỗi) – trả về tiêu đề yêu cầu dưới dạng một chuỗi
  14. Chuỗi getMethod() – trả về tên của phương thức HTTP như GET, POST
  15. Chuỗi getParameter(Tên chuỗi) – trả về tham số của yêu cầu dưới dạng một chuỗi.
  16. Chuỗi getPathInfo() – Trả về thông tin đường dẫn liên quan đến URL
  17. Chuỗi getQueryString() – Trả về chuỗi truy vấn được liên kết với yêu cầu. URL
  18. Chuỗi getServletPath() – trả lại phần của URLcác yêu cầu gọi đến JSP
  19. String[] getParameterValues(Tên chuỗi) – trả về mảng các đối tượng chuỗi chứa các giá trị mà tham số yêu cầu có

Ví dụ:

Trong ví dụ bên dưới, chúng tôi đang sử dụng các phương thức khác nhau bằng cách sử dụng đối tượng yêu cầu

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!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>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>

<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
    HttpSession gurusession = request.getSession();
    out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
    Locale gurulocale = request.getLocale ();
    out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
    String path = request.getPathInfo();
    out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>");
    String lpath = request.get();
    out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>");
    String servername = request.getServerName();
    out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
    int portname = request.getServerPort();
    out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
    Enumeration hnames = request.getHeaderNames();
    while(hnames.hasMoreElements()) {
        String paramName = (String)hnames.nextElement();
        out.print ("<tr><td>" + paramName + "</td>" );

        String paramValue = request.getHeader(paramName);
        out.println("<td> " + paramValue + "</td></tr>");
    }

%>

Giải thích mã:

Code Dòng 17: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được đối tượng phiên của phiên cụ thể đó và chúng tôi nhận được giá trị đối tượng của phiên đó

Code Dòng 19: Sử dụng đối tượng request, chúng ta lấy được ngôn ngữ của phiên cụ thể đó, tức là ngôn ngữ en_US cho trang JSP đó.

Code Dòng 21: Sử dụng đối tượng request, chúng ta lấy thông tin đường dẫn cho trang JSP đó. Trong trường hợp này, thông tin đó là null vì không có đường dẫn nào cho trang JSP. URL đề cập.

Code Dòng 23: Sử dụng đối tượng yêu cầu, chúng ta sẽ nhận được đường dẫn ngữ cảnh, tức là đường dẫn gốc

Code Dòng 25: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được tên máy chủ.

Code Dòng 27: Sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được cổng máy chủ.

Code Dòng 29-35: Bằng cách sử dụng đối tượng yêu cầu, chúng tôi sẽ nhận được các tên tiêu đề xuất hiện dưới dạng bảng liệt kê và do đó chúng tôi nhận được tất cả các giá trị tiêu đề trong tên tiêu đề.

Trong phần này, chúng tôi nhận được tất cả các giá trị tiêu đề dưới dạng Cookie, máy chủ, kết nối, chấp nhận ngôn ngữ, chấp nhận mã hóa.

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Yêu cầu máy khách JSP

Đầu ra:

Chúng tôi đang nhận được một loạt các giá trị như tên phiên, tên miền địa phương, tên đường dẫn, tên máy chủ, tên cổng, máy chủ, đường dẫn ngữ cảnh và tất cả các giá trị tiêu đề của đó JSP.

Phản hồi của máy chủ JSP

  • Khi một yêu cầu được xử lý và sau đó phản hồi được tạo ra từ máy chủ web. Nó bao gồm một dòng trạng thái, tiêu đề phản hồi, một dòng trống và tài liệu.
  • Đây là đối tượng của lớp HTTPServletResponse, là một đối tượng phản hồi.
  • Dòng trạng thái là một phiên bản của HTML.

Tiêu đề phản hồi trong JSP

Các tiêu đề phản hồi trong JSP được đề cập dưới đây:

Tiêu đề Mô tả Chi tiết
Cho phép Nó chỉ định các phương thức yêu cầu như GET, POST mà máy chủ đang yêu cầu
Kiểm soát bộ đệm Tài liệu phản hồi có thể được lưu trữ. Nó có thể là công khai, riêng tư và không có bộ đệm. Không có bộ nhớ đệm chỉ định rằng tài liệu không được lưu vào bộ nhớ đệm
Kết nối Nó hướng dẫn xem trình duyệt có nên sử dụng SavedHTTPConnections hay không. Giá trị đóng thể hiện rằng trình duyệt không nên sử dụng liên tục trong HTTPConnections và “giữ nguyên” có nghĩa là sử dụng các kết nối liên tục
Bố trí nội dung Để hỏi người dùng có lưu phản hồi vào đĩa hay không
Mã hóa nội dung Trang phải được mã hóa trong quá trình truyền tải
Thời lượng nội dung Số byte trong phản hồi
Loại nội dung Nó chỉ định loại phản hồi MIME
hết hạn Chỉ định thời điểm nội dung được coi là lỗi thời và không được lưu vào bộ nhớ đệm
Biến đổi cuối cùng Nó cho biết khi nào tài liệu được sửa đổi lần cuối
Địa điểm Nó phải được bao gồm trong tất cả các phản hồi có mã trạng thái có mã trạng thái là 300
Refresh Nó chỉ định cách tìm trang cập nhật.
Thử lại sau Nó có thể được sử dụng với phản hồi 503 để cho khách hàng biết thời gian có thể lặp lại yêu cầu
Đặt cookie Chỉ định cookie được liên kết với trang

Các phương thức tiêu đề phản hồi HTTP trong JSP

Sau đây là các phương thức trong JSP sử dụng đối tượng phản hồi:

  1. Chuỗi encodeRedirectURL(Sợi dây URL) - mã hóa URL trong chuyển hướngURL phương pháp.
  2. Mã hóa chuỗiURL(Sợi dây URL) - mã hóa URL bằng cách bao gồm ID phiên.
  3. Boolean chứaHeader(Tên chuỗi) – nó có chứa tiêu đề trong JSP hay không.
  4. Boolean isCommited() – phản hồi đã được cam kết hay chưa.
  5. Void addCookie(Cookie cookie) – thêm cookie vào phản hồi
  6. Void addDateHeader(Tên chuỗi, Giá trị chuỗi) – thêm tên và giá trị ngày của tiêu đề phản hồi
  7. Void addHeader(Tên chuỗi, Giá trị chuỗi) – thêm tiêu đề phản hồi với tên và giá trị
  8. Void addIntHeader(Tên chuỗi, giá trị int) – thêm tiêu đề phản hồi với tên và giá trị số nguyên
  9. Xả rỗngBuffer() - ép nội dung trong bộ đệm xuất ra máy khách.
  10. Đặt lại khoảng trống() – xóa dữ liệu trong bộ đệm.
  11. Đặt lại vô hiệuBuffer – xóa bộ đệm nội dung trong phản hồi mà không xóa mã trạng thái.
  12. Void sendError(int sc,String msg) – gửi phản hồi lỗi cho khách hàng bằng mã trạng thái.
  13. Void sendRedirect(Vị trí chuỗi) – gửi phản hồi chuyển hướng tạm thời cho khách hàng.
  14. bộ trốngBufferKích thước (kích thước int) - thiết lập kích thước bộ đệm của cơ thể
  15. Void setCharacterEncoding(Bộ ký tự chuỗi) – đặt mã hóa ký tự
  16. Void setContentType(Loại chuỗi) – đặt loại nội dung của phản hồi
  17. Void setContentLength(int len) – đặt độ dài nội dung của phản hồi
  18. Void setLocale(Locale lcl) – đặt loại ngôn ngữ của phản hồi
  19. Void setStatus(int sc) – đặt mã trạng thái của phản hồi

Ví dụ:

Trong ví dụ này, chúng ta sẽ tìm hiểu các phương thức khác nhau như getLocale, flushbuffer, getWriter, getContentType, setIntHeader.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!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 Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
    // Set refresh,autoload time as 5 seconds
    response.setIntHeader("Refresh", 5);
    //Get current time
    Date dt = new Date();
    out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>

Giải thích mã:

Code Dòng 13: Sử dụng đối tượng phản hồi, chúng tôi nhận được đối tượng ngôn ngữ của phiên JSP này

Code Dòng 15: Sử dụng đối tượng phản hồi, flushbuffer được sử dụng để buộc nội dung bộ đệm vào máy khách

Code Dòng 16: Sử dụng đối tượng phản hồi, chúng ta có được đối tượng nhà văn nhận đầu ra trong luồng đầu ra

Code Dòng 18: Sử dụng đối tượng phản hồi, chúng tôi nhận được loại nội dung tức là loại đối tượng phản hồi MIME

Code Dòng 21: Sử dụng đối tượng phản hồi, nó được sử dụng để tự động tải sau mỗi 5 giây vì 5 được đặt làm tham số thứ hai

Khi bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Phản hồi của máy chủ JSP

Đầu ra:

  • Ở đây ta nhận được kết quả đầu ra vì nó đến từ đối tượng writer từ getWriterĐiều này cung cấp cho chúng ta đối tượng và chúng ta có thể xuất nó ra luồng đầu ra.
  • Chúng tôi lấy ngôn ngữ là en_us và loại nội dung là text/html
  • Chúng tôi nhận được bộ ký tự là ISO 8859
  • Ngày hôm nay là ngày hiện tại.

Trạng thái HTTP JSP Codes

  • Khi yêu cầu được xử lý, phản hồi sẽ được tạo ra. Dòng trạng thái phản hồi bao gồm phiên bản HTTP, mã trạng thái và thông báo liên quan.
  • Thông báo được liên kết trực tiếp với mã trạng thái và phiên bản HTTP và được xác định bởi máy chủ.
  • Theo mặc định, 200 được đặt làm mã trạng thái trong JSP, vì vậy chúng ta không cần đặt rõ ràng.
  • Chúng ta có thể đặt làm phương thức reply.setStatus()

Các mã này được chia thành 5 loại sau:

  • 100-199 – Ở đây khách hàng chỉ ra rằng họ sẽ phản hồi bằng một số hành động
  • 200-299 – Nghĩa là yêu cầu đã thành công
  • 300-399 – Chúng được sử dụng cho các tệp đã được di chuyển và thường bao gồm tiêu đề vị trí cho biết địa chỉ mới
  • 400-499 – Cho biết lỗi của khách hàng
  • 500-599 – Cho biết lỗi của máy chủ

Một số mã trạng thái phổ biến dưới đây:

  • 200 – Cho biết mọi thứ đều ổn
  • 301 – Nó đã di chuyển vĩnh viễn
  • 304 – Không được sửa đổi kể từ lần thay đổi cuối cùng
  • 400 – Yêu cầu xấu
  • 404 không tìm thấy
  • 405 – Không tìm thấy phương pháp
  • 500 - Lỗi máy chủ nội bộ
  • Lỗi 503: Dịch vụ không khả dụng
  • 505 – Phiên bản HTTP không được hỗ trợ

Trạng thái HTTP Code Các phương thức trong JSP

Một số phương thức mã trạng thái trong JSP được liệt kê bên dưới:

  1. Public void setStatus(int statusCode): Nó thiết lập mã trạng thái bất kỳ mà chúng ta muốn thiết lập trong Trang JSP đó. Điều này sẽ cung cấp cho chúng ta thông báo về mã trạng thái đã được thiết lập
  2. Public void sendRedirect(String URL): Nó tạo ra phản hồi 302 cùng với tiêu đề vị trí. URL của tài liệu mới
  3. Public void sendError(int code,String msg): Nó gửi mã trạng thái cùng với tin nhắn ngắn và được định dạng bên trong tài liệu HTML.

Ví dụ:

Trong ví dụ này, chúng tôi đang gửi lỗi tới trang JSP một cách rõ ràng.

<%@ 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 Status Code</title>
</head>
<body>
<% response.sendError(404,"Guru Page Not Found"); %>
</body>
</html>

Giải thích mã:

Code Dòng 10: Sử dụng đối tượng phản hồi, chúng tôi sẽ gửi lỗi đến một trang có hai tham số.

  1. Mã trạng thái – Nó có thể là bất kỳ mã nào ở trên. Trong trường hợp này, chúng tôi đã mô tả là 404
  2. Thông báo - Đó có thể là bất kỳ thông báo cụ thể nào mà chúng tôi muốn hiển thị lỗi

Nếu bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau:

Trạng thái HTTP JSP Codes

Đầu ra:

Ở đây chúng ta nhận được mã lỗi 404, được gửi từ mã và cũng hiển thị “Guru Thông báo "Không tìm thấy trang" xuất hiện trong kết quả đầu ra.

Câu Hỏi Thường Gặp

HttpServletRequest chứa dữ liệu do máy khách gửi đến máy chủ, chẳng hạn như tiêu đề và tham số. HttpServletResponse chứa dữ liệu được máy chủ gửi lại, bao gồm mã trạng thái, tiêu đề phản hồi và nội dung tài liệu.

Mã trạng thái 404 có nghĩa là tài nguyên được yêu cầu không được tìm thấy trên máy chủ. Trong JSP, bạn có thể gửi nó một cách rõ ràng bằng response.sendError(404, “message”) để hiển thị trang báo lỗi không tìm thấy tùy chỉnh.

Sử dụng đối tượng yêu cầu: getHeaderNames() trả về một tập hợp các tên tiêu đề, và getHeader(name) trả về giá trị của từng tiêu đề. Lặp qua các tên để đọc mọi tiêu đề được gửi bởi máy khách.

Trí tuệ nhân tạo (AI) có thể phân tích nhật ký tiêu đề, gắn cờ các tiêu đề bị thiếu hoặc cấu hình sai, phát hiện các vấn đề bảo mật như thiếu kiểm soát bộ nhớ đệm và tóm tắt các mẫu lưu lượng truy cập, giúp...ping Các nhà phát triển gỡ lỗi và tối ưu hóa việc xử lý yêu cầu và phản hồi nhanh hơn.

Đúng vậy. Trí tuệ nhân tạo (AI) có thể tạo ra các đoạn mã JSP đọc các tham số và tiêu đề yêu cầu, thiết lập tiêu đề phản hồi và gửi mã trạng thái từ mô tả bằng ngôn ngữ thông thường, sau đó các nhà phát triển sẽ xem xét tính chính xác và bảo mật của chúng.

Tóm tắt bài viết này với: