Учебники

Сервлеты — Http коды состояния

Формат сообщений HTTP-запросов и HTTP-ответов похож и имеет следующую структуру:

  • Начальная строка состояния + CRLF (возврат каретки + перевод строки, т.е. новая строка)

  • Ноль или более строк заголовка + CRLF

  • Пустая строка, т. Е. CRLF

  • Необязательное тело сообщения, такое как файл, данные запроса или выходные данные запроса.

Начальная строка состояния + CRLF (возврат каретки + перевод строки, т.е. новая строка)

Ноль или более строк заголовка + CRLF

Пустая строка, т. Е. CRLF

Необязательное тело сообщения, такое как файл, данные запроса или выходные данные запроса.

Например, заголовок ответа сервера выглядит следующим образом:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>
<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

Строка состояния состоит из версии HTTP (HTTP / 1.1 в примере), кода состояния (в примере 200) и очень короткого сообщения, соответствующего коду состояния (в примере OK).

Ниже приведен список кодов состояния HTTP и связанных сообщений, которые могут быть возвращены с веб-сервера.

Код Сообщение Описание
100 Продолжить Сервер получил только часть запроса, но до тех пор, пока он не был отклонен, клиент должен продолжить выполнение запроса
101 Протоколы переключения Сервер переключает протокол.
200 Хорошо Запрос в порядке
201 созданный Запрос завершен, и создан новый ресурс
202 Принято Запрос принят к обработке, но обработка не завершена.
203 Неавторизованная информация
204 Без содержания
205 Сбросить содержимое
206 Частичное содержание
300 Множественный выбор Список ссылок. Пользователь может выбрать ссылку и перейти в это место. Максимум пять адресов
301 переехал навсегда Запрашиваемая страница перемещена на новый URL
302 Найденный Запрашиваемая страница временно перемещена на новый URL
303 Смотрите Другое Запрошенная страница может быть найдена под другим URL
304 Не модифицировано
305 Используй прокси
306 неиспользуемый Этот код был использован в предыдущей версии. Он больше не используется, но код зарезервирован
307 Временный редирект Запрашиваемая страница временно перемещена на новый URL.
400 Неверный запрос Сервер не понял запрос
401 неразрешенный Запрашиваемая страница требует имени пользователя и пароля
402 Требуется оплата Вы не можете использовать этот код еще
403 запрещено Доступ к запрашиваемой странице запрещен
404 не обнаружена Сервер не может найти запрошенную страницу.
405 метод не разрешен Указанный в запросе метод недопустим.
406 Неприемлимо Сервер может генерировать только ответ, который не принят клиентом.
407 Требуется проверка подлинности прокси Вы должны пройти аутентификацию на прокси-сервере, прежде чем этот запрос будет обработан.
408 Тайм-аут запроса Запрос занял больше времени, чем сервер был готов ждать.
409 конфликт Запрос не может быть выполнен из-за конфликта.
410 Ушел Запрашиваемая страница больше не доступна.
411 Требуемая длина «Длина содержимого» не определена. Сервер не примет запрос без него.
412 Предварительное условие не выполнено Предварительное условие, указанное в запросе, оценивается сервером как ложное.
413 Запросить объект слишком большой Сервер не примет запрос, потому что объект запроса слишком велик.
414 URL-адрес запроса слишком длинный Сервер не примет запрос, потому что URL слишком длинный. Происходит при преобразовании запроса «post» в запрос «get» с длинной информацией о запросе.
415 Неподдерживаемый тип носителя Сервер не примет запрос, потому что тип носителя не поддерживается.
417 Ожидание не удалось
500 Внутренняя ошибка сервера Запрос не был выполнен. Сервер встретил неожиданное состояние.
501 Не реализованы Запрос не был выполнен. Сервер не поддерживает требуемую функциональность.
502 Bad Gateway Запрос не был выполнен. Сервер получил неверный ответ от вышестоящего сервера.
503 Сервис недоступен Запрос не был выполнен. Сервер временно перегружен или отключен.
504 Время ожидания шлюза Время ожидания истекло.
505 Версия HTTP не поддерживается Сервер не поддерживает версию «http protocol».

Методы для установки кода состояния HTTP

Следующие методы могут быть использованы для установки кода состояния HTTP в вашей программе сервлета. Эти методы доступны с объектом HttpServletResponse .

Sr.No. Метод и описание
1

public void setStatus (int statusCode)

Этот метод устанавливает произвольный код состояния. Метод setStatus принимает int (код состояния) в качестве аргумента. Если ваш ответ включает в себя специальный код состояния и документ, обязательно вызовите setStatus, прежде чем возвращать какой-либо контент с помощью PrintWriter .

2

public void sendRedirect (String url)

Этот метод генерирует 302 ответ вместе с заголовком Location, содержащим URL нового документа

3

public void sendError (int code, String message)

Этот метод отправляет код состояния (обычно 404) вместе с коротким сообщением, которое автоматически форматируется внутри документа HTML и отправляется клиенту.

public void setStatus (int statusCode)

Этот метод устанавливает произвольный код состояния. Метод setStatus принимает int (код состояния) в качестве аргумента. Если ваш ответ включает в себя специальный код состояния и документ, обязательно вызовите setStatus, прежде чем возвращать какой-либо контент с помощью PrintWriter .

public void sendRedirect (String url)

Этот метод генерирует 302 ответ вместе с заголовком Location, содержащим URL нового документа

public void sendError (int code, String message)

Этот метод отправляет код состояния (обычно 404) вместе с коротким сообщением, которое автоматически форматируется внутри документа HTML и отправляется клиенту.

Пример кода состояния HTTP

Ниже приведен пример, который отправляет код ошибки 407 в клиентский браузер, и браузер покажет вам «Требуется аутентификация !!!» сообщение.

// 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);
   }
}

Теперь вызов вышеупомянутого сервлета будет отображать следующий результат —

type Status report

message Need authentication!!!

description The client must first authenticate itself with the proxy (Need authentication!!!).