Простая библиотека тегов JSP для отображения кода, причины, причины и/или сообщения для кодов состояния HTTP на страницах ошибок JSP.
Например:
<%@ page isErrorPage = " true " %>
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
< html >< head >
< title >< hs:code /> < hs:reason default = " Server Error " /></ title >
</ head >
< h1 >< hs:reason default = " Server Error " /></ h1 >
Cause: < pre >< hs:cause default = " Unable to complete your request. " /></ pre >
Message: < pre >< hs:message default = " A server error has occured. " /></ pre >
...или
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >отобразит в коде состояния 501:
Not Implemented Включите следующее в свой файл build.gradle :
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} Включите следующее в свой файл bld Build:
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); Как артефакт Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > Тег <hs:cause/> отображает причину текущего кода состояния HTTP, если таковые имеются. Стенография для:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >Дополнительные атрибуты:
| Атрибут | Описание |
|---|---|
default | Значение отступления на вывод, если нет причины |
escapeXml | Преобразует <,>, &, ', «в их соответствующие коды объектов. Значение true по умолчанию. |
Тег <hs:code/> отображает тег текущего кода состояния HTTP, если таковой имеется. Стенография для:
<%= pageContext . getErrorData() . getStatusCode() % > Тег <hs:message/> Отображает текущее сообщение об ошибке, если таковое имеется. Стенография для:
<%= request . getAttribute( " javax.servlet.error.message " ) % >Дополнительные атрибуты:
| Атрибут | Описание |
|---|---|
default | Значение отступления на вывод, если сообщение об ошибке не доступно. |
escapeXml | Преобразует <,>, &, ', «в их соответствующие коды объектов. Значение true по умолчанию. |
Тег <hs:reason/> отображает причину кода состояния HTTP, если таковые имеются. Дополнительные атрибуты:
| Атрибут | Описание |
|---|---|
default | Значение задержки для вывода, если нет причины. |
code | Код ошибки состояния HTTP. Если не указано, используется текущий код состояния. |
escapeXml | Преобразует <,>, &, ', «в их соответствующие коды объектов. Значение true по умолчанию. |
Код StatusCode может использоваться для проверки класса ошибки кода состояния. Например, используя JSTL:
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
<%@ taglib prefix = " c " uri = " http://java.sun.com/jsp/jstl/core " %>
< jsp:useBean id = " statusCode " class = " net.thauvin.erik.httpstatus.StatusCode " />
< c:set target = " ${ statusCode } " property = " code " >< hs:code /></ c:set >
< c:choose >
< c:when test = " ${ statusCode . isClientError() } " >
An error occurred on your side. (< hs:reason />)
</ c:when >
< c:otherwise >
An error occurred on our side. (< hs:message />)
</ c:otherwise >
</ c:choose >или в сервлете:
import net . thauvin . erik . httpstatus . StatusCode ;
public class ExampleServlet extends HttpServlet {
public void doGet ( HttpServletRequest request , HttpServletResponse response ) {
var statusCode = new StatusCode (
( Integer ) request . getAttribute ( "javax.servlet.error.status_code" ));
if ( statusCode . isError ()) {
if ( statusCode . isServerError ()) {
var reason = statusCode . getReason ();
} else {
// ...
}
}
}
} Методы StatusCode :
| Метод | Описание |
|---|---|
getReason | Возвращает причину кода состояния (например: Internal Server Error ) |
isClientError | Проверяет, является ли код состояния клиентской ошибкой. |
isError | Проверяет, является ли код состояния сервером или ошибкой клиента. |
isInfo | Проверяет, является ли код состояния информационный. |
isRedirect | Проверяет, является ли код состояния перенаправление. |
isServerError | Проверяет, является ли код состояния ошибкой сервера. |
isSuccess | Проверяет, является ли код состояния успешным. ( OK ) |
isValid | Проверяет, действителен ли код состояния. |
Причины определяются в свойствах ресурса, следующим образом:
| Код статуса | Причина |
|---|---|
100 | Продолжать |
101 | Протоколы переключения |
102 | Обработка |
103 | Ранние намеки |
110 | Ответ несвежий |
111 | Ревализация не удалась |
112 | Отключенная операция |
113 | Эвристическое истечение |
199 | Разное предупреждение |
200 | ХОРОШО |
201 | Созданный |
202 | Принял |
203 | Неавторитационная информация |
204 | Нет контента |
205 | Сбросить содержание |
206 | Частичный контент |
207 | Многостатус |
208 | Уже сообщается |
214 | Преобразование применяется |
218 | Это нормально |
226 | Я использовал |
299 | Разное постоянное предупреждение |
300 | Несколько вариантов |
301 | Перемещался навсегда |
302 | Найдено/перемещено временно |
303 | Смотрите другое |
304 | Не изменяется |
305 | Используйте прокси |
306 | Неиспользованный |
307 | Временный перенаправление |
308 | Постоянный перенаправление |
400 | Плохой запрос |
401 | Несанкционированный |
402 | Оплата требуется |
403 | Запрещенный |
404 | Не найдено |
405 | Метод не разрешен |
406 | Неприемлемо |
407 | Требуется аутентификация прокси |
408 | Запросить тайм -аут |
409 | Конфликт |
410 | Ушел |
411 | Требуется длина |
412 | Предварительное условие не удалось |
413 | Полезная нагрузка слишком большая |
414 | Ури слишком долго |
415 | Неподдерживаемый тип медиа |
416 | Диапазон не удовлетворен |
417 | Ожидание не удалось |
418 | Я чайник |
419 | Недостаточное место на ресурсе |
420 | Метод сбой |
421 | Ошибочный запрос |
422 | Необработанный контент |
423 | Заперт |
424 | Неудачная зависимость |
425 | Слишком рано |
426 | Обновление требуется |
428 | Требуется предварительное условие |
429 | Слишком много запросов |
430 | Запросить поля заголовка слишком большие |
431 | Запросить поля заголовка слишком большие |
440 | Временный тайм -аут |
444 | Нет ответа |
449 | Повторно с |
450 | Заблокировано управлением родительским управлением Windows |
451 | Недоступен по юридическим причинам |
460 | Клиент закрытый соединение перед балансировщиком нагрузки. |
463 | Заголовок X-Forwarded с более чем 30 IP-адресами |
494 | Запросить заголовок слишком большой |
495 | Ошибка сертификата SSL |
496 | Сертификат SSL требуется |
497 | HTTP -запрос, отправленный в порт HTTPS |
498 | Токен истек/недействителен |
499 | Клиент закрытый запрос |
500 | Внутренняя ошибка сервера |
501 | Не реализовано |
502 | Плохие ворота |
503 | Сервис недоступен |
504 | Тайм -аут шлюза |
505 | HTTP -версия не поддерживается |
506 | Вариант также переговоры |
507 | Недостаточное хранение |
508 | Петля обнаружена |
509 | Предел полосы пропускания превышен |
510 | Не расширен |
511 | Требуется аутентификация сети |
520 | Неизвестная ошибка |
521 | Веб -сервер падает |
522 | Соединение времено |
523 | Происхождение недоступно |
524 | Тайм -аут произошел |
525 | SSL Handshake не удалось |
526 | Недейтельный сертификат SSL |
527 | Ошибка Railgun |
529 | Сайт перегружен |
530 | Сайт заморожен |
540 | Временно отключен |
561 | Несанкционированный |
598 | Ошибка тайм -аута сети |
599 | Ошибка тайм -аута сети подключения |
783 | Неожиданный токен |
Вы можете запросить причина фразы для кодов статуса следующим образом:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server ErrorЕсли код состояния не указан, все будет напечатано:
$ java -jar httpstatus-1.1.1.jar
100: Continue
101: Switching Protocols
102: Processing
103: Early Hints
110: Response is Stale
111: Revalidation Failed
112: Disconnected Operation
113: Heuristic Expiration
199: Miscellaneous Warning
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
...Вы также можете распечатать коды состояния по классам ответов:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... Если вы хотите внести свой вклад в этот проект, все, что вам нужно сделать, это клонировать репозиторий GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitЗатем используйте BLD для построения:
cd HttpStatus
./bld compileПроект имеет структуру проекта IntelliJ Idea. Вы можете просто открыть его после того, как все зависимости были загружены и просмотреть код.