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 -

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