В этой главе мы обсудим коды статуса 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, попробуйте установить разные коды состояния и их описание.