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.

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:
- Cookie[] getCookies() – trả về một mảng chứa các đối tượng cookie mà khách hàng đã gửi
- 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
- Phép liệt kê getHeaderNames() – Chứa danh sách liệt kê các tên tiêu đề.
- Liệt kê getParameterNames() – chứa bảng liệt kê nhận tên tham số trong yêu cầu.
- 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.
- 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ủ.
- Đố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.
- ServletInputStream getInputStream() – Truy xuất nội dung yêu cầu dưới dạng dữ liệu nhị phân.
- Chuỗi getAuthType() – trả về tên của sơ đồ xác thực để bảo vệ servlet
- 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.
- Chuỗi getContentType() – trả về kiểu MIME của nội dung yêu cầu.
- Chuỗi getContextPath() – trả về phần URI yêu cầu cho biết đường dẫn ngữ cảnh của URI
- Chuỗi getHeader(Tên chuỗi) – trả về tiêu đề yêu cầu dưới dạng một chuỗi
- Chuỗi getMethod() – trả về tên của phương thức HTTP như GET, POST
- 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.
- Chuỗi getPathInfo() – Trả về thông tin đường dẫn liên quan đến URL
- Chuỗi getQueryString() – Trả về chuỗi truy vấn được liên kết với yêu cầu. URL
- Chuỗi getServletPath() – trả lại phần của URLcác yêu cầu gọi đến JSP
- 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:
Đầ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:
- Chuỗi encodeRedirectURL(Sợi dây URL) - mã hóa URL trong chuyển hướngURL phương pháp.
- Mã hóa chuỗiURL(Sợi dây URL) - mã hóa URL bằng cách bao gồm ID phiên.
- Boolean chứaHeader(Tên chuỗi) – nó có chứa tiêu đề trong JSP hay không.
- Boolean isCommited() – phản hồi đã được cam kết hay chưa.
- Void addCookie(Cookie cookie) – thêm cookie vào phản hồi
- 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
- 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ị
- 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
- Xả rỗngBuffer() - ép nội dung trong bộ đệm xuất ra máy khách.
- Đặt lại khoảng trống() – xóa dữ liệu trong bộ đệm.
- Đặ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.
- 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.
- 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.
- 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ể
- Void setCharacterEncoding(Bộ ký tự chuỗi) – đặt mã hóa ký tự
- Void setContentType(Loại chuỗi) – đặt loại nội dung của phản hồi
- Void setContentLength(int len) – đặt độ dài nội dung của phản hồi
- Void setLocale(Locale lcl) – đặt loại ngôn ngữ của phản hồi
- 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:
Đầ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:
- 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
- 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
- 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ố.
- 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
- 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:
Đầ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.



