Una simple biblioteca de etiquetas JSP para mostrar el código, la razón, la causa y/o el mensaje para los códigos de estado HTTP en las páginas de error JSP.
Por ejemplo:
<%@ 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 >
...o
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >se mostraría en un código de estado 501:
Not Implemented Incluya lo siguiente en su archivo build.gradle :
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} Incluya lo siguiente en su archivo de compilación bld :
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); Como un artefacto Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > La etiqueta <hs:cause/> muestra la causa del código de estado HTTP actual, si corresponde. Una taquigrafía para:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >Los atributos opcionales son:
| Atributo | Descripción |
|---|---|
default | El valor de retroceso para la salida, si no es causa |
escapeXml | Conviertos <,>, &, ', "a sus códigos de entidad correspondientes. El valor es true de forma predeterminada. |
La etiqueta <hs:code/> muestra el código de estado HTTP actual, si corresponde. Una taquigrafía para:
<%= pageContext . getErrorData() . getStatusCode() % > La etiqueta <hs:message/> muestra el mensaje de error actual, si corresponde. Una taquigrafía para:
<%= request . getAttribute( " javax.servlet.error.message " ) % >Los atributos opcionales son:
| Atributo | Descripción |
|---|---|
default | El valor de retroceso a la salida, si no hay ningún mensaje de error disponible. |
escapeXml | Conviertos <,>, &, ', "a sus códigos de entidad correspondientes. El valor es true de forma predeterminada. |
La etiqueta <hs:reason/> muestra el motivo de un código de estado HTTP, si corresponde. Los atributos opcionales son:
| Atributo | Descripción |
|---|---|
default | El valor retroceso de la salida, si no hay ningún motivo disponible. |
code | El código de error de estado HTTP. Si no se especifica, se utiliza el código de estado actual. |
escapeXml | Conviertos <,>, &, ', "a sus códigos de entidad correspondientes. El valor es true de forma predeterminada. |
El StatusCode Bean se puede usar para verificar la clase del error del código de estado. Por ejemplo, usando el 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 >o en un servlet:
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 {
// ...
}
}
}
} Los métodos de StatusCode bean son:
| Método | Descripción |
|---|---|
getReason | Devuelve el motivo del código de estado (por ejemplo: Internal Server Error ) |
isClientError | Comprueba si el código de estado es un error del cliente. |
isError | Comprueba si el código de estado es un error de servidor o cliente. |
isInfo | Comprueba si el código de estado es informativo. |
isRedirect | Comprueba si el código de estado es una redirección. |
isServerError | Comprueba si el código de estado es un error del servidor. |
isSuccess | Comprueba si el código de estado es un éxito. ( OK ) |
isValid | Comprueba si el código de estado es válido. |
Las razones se definen en una propiedad de recursos de la siguiente manera:
| Código de estado | Razón |
|---|---|
100 | Continuar |
101 | Protocolos de conmutación |
102 | Tratamiento |
103 | Pistas tempranas |
110 | La respuesta es rancita |
111 | Revalidación fallida |
112 | Operación desconectada |
113 | Expiración heurística |
199 | Advertencia miscelánea |
200 | DE ACUERDO |
201 | Creado |
202 | Aceptado |
203 | Información no autoritativa |
204 | Sin contenido |
205 | Restablecer contenido |
206 | Contenido parcial |
207 | Multi-estatus |
208 | Ya informado |
214 | Transformación aplicada |
218 | Esto esta bien |
226 | Estoy usado |
299 | Advertencia persistente miscelánea |
300 | Múltiples opciones |
301 | Movido permanentemente |
302 | Encontrado/movido temporalmente |
303 | Ver otro |
304 | No modificado |
305 | Usar proxy |
306 | No usado |
307 | Redirección temporal |
308 | Redirección permanente |
400 | Solicitud incorrecta |
401 | No autorizado |
402 | Requerido el pago |
403 | Prohibido |
404 | Extraviado |
405 | Método no permitido |
406 | No aceptable |
407 | Se requiere autenticación de proxy |
408 | Tiempo de espera de solicitud |
409 | Conflicto |
410 | Desaparecido |
411 | Longitud requerida |
412 | Falló la condición previa |
413 | Carga útil demasiado grande |
414 | Uri demasiado largo |
415 | Tipo de medio no compatible |
416 | Rango no satisfable |
417 | La expectativa falló |
418 | Soy una tetera |
419 | Espacio insuficiente en recursos |
420 | Falla del método |
421 | Solicitud mal dirigida |
422 | Contenido no procesable |
423 | Encerrado |
424 | Dependencia fallida |
425 | Demasiado temprano |
426 | Se requiere la actualización |
428 | Requerido precondición |
429 | Demasiadas solicitudes |
430 | Solicitar campos de encabezado demasiado grandes |
431 | Solicitar campos de encabezado demasiado grandes |
440 | Tiempo de espera de inicio de sesión |
444 | Sin respuesta |
449 | Reintentar con |
450 | Bloqueado por los controles de los padres de Windows |
451 | No disponible por razones legales |
460 | Conexión cerrada del cliente antes del tiempo de tiempo inactivo del equilibrador de carga |
463 | Encabezado X-forward-para más de 30 direcciones IP |
494 | Solicitar encabezado demasiado grande |
495 | Error de certificado SSL |
496 | Se requiere el certificado SSL |
497 | Solicitud HTTP enviada al puerto HTTPS |
498 | Token expirado/inválido |
499 | Solicitud cerrada del cliente |
500 | Error Interno del Servidor |
501 | No implementado |
502 | Maleta |
503 | Servicio No Disponible |
504 | Tiempo de espera de la puerta de entrada |
505 | Versión http no compatible |
506 | La variante también negocia |
507 | Almacenamiento insuficiente |
508 | Bucle detectado |
509 | Límite de ancho de banda excedido |
510 | No extendido |
511 | Se requiere autenticación de la red |
520 | Error desconocido |
521 | El servidor web está inactivo |
522 | Conexión agotado |
523 | El origen es inalcanzable |
524 | Ocurrió un tiempo de espera |
525 | SSL Handshake falló |
526 | Certificado SSL no válido |
527 | Error de ferrocarril |
529 | El sitio está sobrecargado |
530 | El sitio está congelado |
540 | Deshabilitado temporalmente |
561 | No autorizado |
598 | Error de tiempo de espera de lectura de red |
599 | Error de tiempo de espera de la conexión de red |
783 | Token inesperado |
Puede consultar la frase de razón para los códigos de estado de la siguiente manera:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server ErrorSi no se especifica ningún código de estado, todo se imprimirá:
$ 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
...También puede imprimir códigos de estado por clases de respuesta:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... Si desea contribuir a este proyecto, todo lo que tiene que hacer es clonar el repositorio de GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitLuego use Bld para construir:
cd HttpStatus
./bld compileEl proyecto tiene una estructura del proyecto Idea IntelliJ. Puede abrirlo después de que se descargaron todas las dependencias y examinaron el código.