Учебники

JSP – Http коды состояния

В этой главе мы обсудим коды статуса Http в JSP. Формат 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 .

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

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

S.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 отправляется в браузер клиента. После этого браузер отобразит сообщение « Требуется аутентификация !!! ».

<html>
   <head>
      <title>Setting HTTP Status Code</title>
   </head>
   
   <body>
      <%
         // Set error code and reason.
         response.sendError(407, "Need authentication!!!" );
      %>
   </body>
</html>

Вы получите следующий вывод –

HTTP Status 407 - Need authentication!!!

type Status report

message Need authentication!!!

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

Apache Tomcat/5.5.29

type Status report

message Need authentication!!!

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

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