JSP Коды состояния HTTP
HTTP-запросы и HTTP-ответы имеют схожие форматы, оба имеют следующую структуру:
- Начинается со строки состояния + 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, которые могут быть возвращены сервером, и соответствующие им сообщения:
| Код состояния | Сообщение | Описание |
|---|---|---|
| 100 | Continue | Сервер получил только часть запроса, но пока запрос не отклонён, клиент должен продолжить запрос. |
| 101 | Переключение протоколов | Сервер переключает протоколы |
| 200 | ОК | Запрос подтверждён |
| 201 | Создано | Запрос был завершён, и создан новый ресурс |
| 202 | Принято | Запрос принят, но обработка ещё не завершена |
| 203 | Неавторитетная информация | |
| 204 | Нет содержимого | |
| 205 | Сброс содержимого | |
| 206 | Частичное содержимое | |
| 300 | Множественный выбор | Список гиперссылок; пользователь может выбрать гиперссылку и перейти по ней; поддерживается до 5 гиперссылок |
| 301 | Перемещено навсегда | Запрошенная страница была перемещена на новый URL |
| 302 | Найдено | Запрошенная страница временно перемещена на новый URL |
| 303 | Смотрите другое | Запрошенную страницу можно найти по другому URL |
| 304 | Не изменено | |
| 305 | Использовать прокси | |
| 306 | Не используется | Этот код состояния больше не используется, но код состояния зарезервирован |
| 307 | Временное перенаправление | Запрошенная страница временно перемещена на новый URL |
| 400 | Некорректный запрос | Сервер не смог понять запрос |
| 401 | Не авторизован | Для запрошенной страницы требуются имя пользователя и пароль |
| 402 | Требуется оплата | Этот код состояния в настоящее время не может быть использован |
| 403 | Запрещено | Доступ к запрошенной странице запрещён |
| 404 | Не найдено | Сервер не смог найти запрошенную страницу |
| 405 | Метод не разрешён | Метод, указанный в запросе, не разрешён |
| 406 | Неприемлемо | Сервер может создать только ответ, который клиент не может принять |
| 407 | Требуется аутентификация прокси | Прокси-сервер должен быть аутентифицирован, прежде чем запрос может быть обслужен |
| 408 | Тайм-аут запроса | Время запроса превысило время ожидания сервера, и соединение было закрыто |
| 409 | Конфликт | В запросе есть противоречия |
| 410 | Удалён | Запрошенная страница больше недоступна |
| 411 | Требуется длина | "Content-Length" не определён, и сервер отказывается принимать запрос |
| 412 | Предварительное условие не выполнено | Предварительное условие запроса было оценено сервером как ложное |
| 413 | Сущность запроса слишком велика | Сервер отказался принять запрос, потому что сущность запроса слишком велика |
| 414 | Слишком длинный Request-url | Сервер отказался принять запрос, потому что URL слишком длинный. Это часто происходит, когда при преобразовании запроса "POST" в запрос "GET" добавляется большой объём параметров запроса |
| 415 | Неподдерживаемый тип медиа | Сервер отказался принять запрос, потому что медиатип не поддерживается |
| 417 | Ожидание не оправдалось | |
| 500 | Внутренняя ошибка сервера | Запрос был неполным; сервер обнаружил непредвиденное состояние |
| 501 | Не реализовано | Запрос был неполным; сервер не предоставляет требуемую функциональность |
| 502 | Плохой шлюз | Запрос был неполным; сервер получил неверный ответ от вышестоящего сервера |
| 503 | Сервис недоступен | Запрос был неполным; сервер временно перезагружается или завершает работу |
| 504 | Тайм-аут шлюза | Тайм-аут шлюза |
| 505 | Версия HTTP не поддерживается | Сервер не поддерживает указанную версию HTTP |
Методы установки кодов состояния HTTP
В следующей таблице перечислены методы, используемые для установки кодов состояния в классе HttpServletResponse:
| S.N. | Метод & Описание |
|---|---|
| 1 | public void setStatus ( int statusCode )Этот метод может установить любой код состояния. Если ваш ответ содержит специальный код состояния и документ, убедитесь, что вызываете метод setStatus перед возвратом любого содержимого с PrintWriter. |
| 2 | public void sendRedirect(String url)Этот метод генерирует ответ 302, а также генерирует заголовокLocation, сообщающий URL нового документа |
| 3 | public void sendError(int code, String message)Этот метод автоматически вставляет код состояния (обычно 404) и короткое сообщение в HTML-документ и отправляет его обратно клиенту |
Пример программы с кодом состояния HTTP
Следующий пример отправит в браузер код ошибки 407, и затем браузер сообщит вам "Need authentication!!!".
<html> <head> <title>Setting HTTP Status Code</title> </head> <body> <% // 设置错误代码,并说明原因 response.sendError(407, "Need authentication!!!" ); %> </body> </html>
Откройте указанную выше страницу JSP, и вы получите следующий результат:
Вы также можете попробовать использовать другие коды состояния, чтобы проверить, не получите ли вы неожиданных результатов.
Другие расширения