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