Servlets - Mã trạng thái Http
Định dạng của yêu cầu HTTP và thông báo phản hồi HTTP tương tự nhau và sẽ có cấu trúc sau:
Dòng trạng thái ban đầu + CRLF (Chuyến xe trở lại + Nguồn cấp hàng tức là Dòng mới)
Không hoặc nhiều dòng tiêu đề + CRLF
Một dòng trống, tức là CRLF
Nội dung thư tùy chọn như tệp, dữ liệu truy vấn hoặc đầu ra truy vấn.
Ví dụ: tiêu đề phản hồi của máy chủ trông như sau:
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
Dòng trạng thái bao gồm phiên bản HTTP (trong ví dụ là HTTP / 1.1), mã trạng thái (200 trong ví dụ) và một thông báo rất ngắn tương ứng với mã trạng thái (trong ví dụ là OK).
Sau đây là danh sách các mã trạng thái HTTP và các thông báo liên quan có thể được trả về từ Máy chủ Web -
Mã | Thông điệp | Sự miêu tả |
---|---|---|
100 | Tiếp tục | Máy chủ mới chỉ nhận được một phần yêu cầu, nhưng miễn là nó chưa bị từ chối, máy khách nên tiếp tục với yêu cầu |
101 | Chuyển đổi giao thức | Máy chủ chuyển giao thức. |
200 | đồng ý | Yêu cầu là OK |
201 | Tạo | Yêu cầu đã hoàn tất và một tài nguyên mới được tạo |
202 | Đã được chấp nhận | Yêu cầu được chấp nhận để xử lý, nhưng quá trình xử lý chưa hoàn tất. |
203 | Thông tin không có thẩm quyền | |
204 | Không có nội dung | |
205 | Đặt lại nội dung | |
206 | Nội dung một phần | |
300 | Nhiều lựa chọn | Một danh sách liên kết. Người dùng có thể chọn một liên kết và đi đến vị trí đó. Tối đa năm địa chỉ |
301 | Đã di chuyển vĩnh viễn | Trang được yêu cầu đã chuyển sang một url mới |
302 | Tìm | Trang được yêu cầu đã tạm thời chuyển sang một url mới |
303 | Xem Khác | Trang được yêu cầu có thể được tìm thấy dưới một url khác |
304 | Không sửa đổi | |
305 | Sử dụng Proxy | |
306 | Không sử dụng | Mã này đã được sử dụng trong phiên bản trước. Nó không còn được sử dụng, nhưng mã được bảo lưu |
307 | Chuyển hướng tạm thời | Trang được yêu cầu đã tạm thời chuyển sang một url mới. |
400 | Yêu cầu không hợp lệ | Máy chủ không hiểu yêu cầu |
401 | Không được phép | Trang được yêu cầu cần có tên người dùng và mật khẩu |
402 | yêu cầu thanh toán | Bạn chưa thể sử dụng mã này |
403 | Bị cấm | Truy cập bị cấm vào trang được yêu cầu |
404 | Không tìm thấy | Máy chủ không thể tìm thấy trang được yêu cầu. |
405 | Phương pháp không được phép | Phương thức được chỉ định trong yêu cầu không được phép. |
406 | Không thể chấp nhận | Máy chủ chỉ có thể tạo phản hồi không được máy khách chấp nhận. |
407 | Yêu cầu xác thực proxy | Bạn phải xác thực bằng máy chủ proxy trước khi yêu cầu này có thể được phục vụ. |
408 | Hết thời gian yêu cầu | Yêu cầu mất nhiều thời gian hơn máy chủ đã chuẩn bị để chờ. |
409 | Cuộc xung đột | Không thể hoàn thành yêu cầu do xung đột. |
410 | Không còn | Trang được yêu cầu không còn nữa. |
411 | Chiều dài yêu cầu | "Nội dung-Độ dài" không được xác định. Máy chủ sẽ không chấp nhận yêu cầu nếu không có nó. |
412 | Điều kiện tiên quyết không thành công | Điều kiện tiên quyết được đưa ra trong yêu cầu được máy chủ đánh giá là false. |
413 | Yêu cầu thực thể quá lớn | Máy chủ sẽ không chấp nhận yêu cầu vì thực thể yêu cầu quá lớn. |
414 | Url yêu cầu quá dài | Máy chủ sẽ không chấp nhận yêu cầu do url quá dài. Xảy ra khi bạn chuyển đổi yêu cầu "đăng" thành yêu cầu "nhận" với thông tin truy vấn dài. |
415 | Loại phương tiện không được hỗ trợ | Máy chủ sẽ không chấp nhận yêu cầu, vì loại phương tiện không được hỗ trợ. |
417 | Kỳ vọng không thành công | |
500 | Lỗi máy chủ nội bộ | Yêu cầu đã không được hoàn thành. Máy chủ gặp tình trạng không mong muốn. |
501 | Không được thực hiện | Yêu cầu đã không được hoàn thành. Máy chủ không hỗ trợ chức năng được yêu cầu. |
502 | Cổng xấu | Yêu cầu đã không được hoàn thành. Máy chủ nhận được phản hồi không hợp lệ từ máy chủ ngược dòng. |
503 | dịch vụ Không sẵn có | Yêu cầu đã không được hoàn thành. Máy chủ tạm thời quá tải hoặc ngừng hoạt động. |
504 | Cổng Time-out | Cổng vào đã hết thời gian. |
505 | Phiên bản HTTP không được hỗ trợ | Máy chủ không hỗ trợ phiên bản "giao thức http". |
Phương pháp đặt mã trạng thái HTTP
Các phương pháp sau có thể được sử dụng để đặt Mã trạng thái HTTP trong chương trình servlet của bạn. Các phương thức này có sẵn với đối tượng HttpServletResponse .
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | public void setStatus ( int statusCode ) Phương thức này đặt một mã trạng thái tùy ý. Phương thức setStatus nhận một int (mã trạng thái) làm đối số. Nếu phản hồi của bạn bao gồm một mã trạng thái đặc biệt và một tài liệu, hãy nhớ gọi setStatus trước khi thực sự trả lại bất kỳ nội dung nào bằng PrintWriter . |
2 | public void sendRedirect(String url) Phương pháp này tạo phản hồi 302 cùng với tiêu đề Vị trí cung cấp URL của tài liệu mới |
3 | public void sendError(int code, String message) Phương thức này sẽ gửi một mã trạng thái (thường là 404) cùng với một thông báo ngắn được định dạng tự động bên trong tài liệu HTML và được gửi đến máy khách. |
Ví dụ về mã trạng thái HTTP
Sau đây là ví dụ gửi mã lỗi 407 đến trình duyệt máy khách và trình duyệt sẽ hiển thị cho bạn "Cần xác thực !!!" thông điệp.
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
// Extend HttpServlet class
public class showError extends HttpServlet {
// Method to handle GET method request.
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
}
// Method to handle POST method request.
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Bây giờ việc gọi servlet ở trên sẽ hiển thị kết quả sau:
HTTP Status 407 - Need authentication!!!
type Status report
messageNeed authentication!!!
descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).
Apache Tomcat/5.5.29