Uma biblioteca de tags JSP simples para exibir o código, razão, causa e/ou mensagem para códigos de status HTTP nas páginas de erro JSP.
Por exemplo:
<%@ 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 >
...ou
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >exibiria em um código de status 501:
Not Implemented Inclua o seguinte no seu arquivo build.gradle :
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} Inclua o seguinte no seu arquivo de construção bld :
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); Como um artefato Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > A tag <hs:cause/> exibe a causa do código de status HTTP atual, se houver. Uma abreviação para:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >Os atributos opcionais são:
| Atributo | Descrição |
|---|---|
default | O valor de fallback para a saída, se nenhuma causa for |
escapeXml | Converte <,>, &, ', "em seus códigos de entidade correspondentes. O valor é true por padrão. |
A tag <hs:code/> exibe o código de status HTTP atual, se houver. Uma abreviação para:
<%= pageContext . getErrorData() . getStatusCode() % > A tag <hs:message/> exibe a mensagem de erro atual, se houver. Uma abreviação para:
<%= request . getAttribute( " javax.servlet.error.message " ) % >Os atributos opcionais são:
| Atributo | Descrição |
|---|---|
default | O valor de fallback para saída, se nenhuma mensagem de erro estiver disponível. |
escapeXml | Converte <,>, &, ', "em seus códigos de entidade correspondentes. O valor é true por padrão. |
A tag <hs:reason/> exibe o motivo do código de status HTTP, se houver. Os atributos opcionais são:
| Atributo | Descrição |
|---|---|
default | O valor de fallback para a saída, se não houver motivo. |
code | O código de erro de status HTTP. Se não estiver especificado, o código de status atual é usado. |
escapeXml | Converte <,>, &, ', "em seus códigos de entidade correspondentes. O valor é true por padrão. |
O Bean StatusCode pode ser usado para verificar a classe do erro de código de status. Por exemplo, usando o 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 >ou em um 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 {
// ...
}
}
}
} Os métodos de bean StatusCode são:
| Método | Descrição |
|---|---|
getReason | Retorna o motivo do código de status (por exemplo: Internal Server Error ) |
isClientError | Verifica se o código de status é um erro do cliente. |
isError | Verifica se o código de status é um erro de servidor ou cliente. |
isInfo | Verifica se o código de status é informativo. |
isRedirect | Verifica se o código de status é um redirecionamento. |
isServerError | Verifica se o código de status é um erro do servidor. |
isSuccess | Verifica se o código de status é um sucesso. ( OK ) |
isValid | Verifica se o código de status é válido. |
Os motivos são definidos em propriedades do ResourceBundle da seguinte forma:
| Código de status | Razão |
|---|---|
100 | Continuar |
101 | Protocolos de comutação |
102 | Processamento |
103 | Dicas anteriores |
110 | A resposta é obsoleta |
111 | A reavalidação falhou |
112 | Operação desconectada |
113 | Expiração heurística |
199 | Aviso diverso |
200 | OK |
201 | Criado |
202 | Aceito |
203 | Informação não autoritativa |
204 | Sem conteúdo |
205 | Redefinir conteúdo |
206 | Conteúdo parcial |
207 | Multi-status |
208 | Já relatado |
214 | Transformação aplicada |
218 | Isso está bem |
226 | Eu sou usado |
299 | Aviso persistente diverso |
300 | Múltiplas opções |
301 | Movido permanentemente |
302 | Encontrado/movido temporariamente |
303 | Veja outro |
304 | Não modificado |
305 | Use proxy |
306 | Não utilizado |
307 | Redirecionamento temporário |
308 | Redirecionamento permanente |
400 | Pedido ruim |
401 | Não autorizado |
402 | Pagamento necessário |
403 | Proibido |
404 | Não encontrado |
405 | Método não permitido |
406 | Não aceitável |
407 | Autenticação de proxy necessária |
408 | Solicitar tempo limite |
409 | Conflito |
410 | Perdido |
411 | Comprimento necessário |
412 | A pré -condição falhou |
413 | Carga útil muito grande |
414 | URI por muito tempo |
415 | Tipo de mídia não suportado |
416 | Alcance não é satisfatório |
417 | A expectativa falhou |
418 | Eu sou um bule |
419 | Espaço insuficiente em recurso |
420 | Falha do método |
421 | Solicitação mal direcionada |
422 | Conteúdo não abrangente |
423 | Trancado |
424 | Dependência com falha |
425 | Muito cedo |
426 | Atualização necessária |
428 | Pré -condição necessária |
429 | Muitos pedidos |
430 | Solicitar campos de cabeçalho muito grandes |
431 | Solicitar campos de cabeçalho muito grandes |
440 | Timeout de login |
444 | Sem resposta |
449 | Tente novamente com |
450 | Bloqueado por controles parentais do Windows |
451 | Indisponível por razões legais |
460 | Conexão fechada do cliente antes do tempo inativo de balanceamento de carga |
463 | Cabeçalho X-forwarded para mais de 30 endereços IP |
494 | Solicite cabeçalho muito grande |
495 | Erro de certificado SSL |
496 | Certificado SSL necessário |
497 | Solicitação HTTP enviada para a porta HTTPS |
498 | Token expirado/inválido |
499 | Solicitação fechada do cliente |
500 | Erro do Servidor Interno |
501 | Não implementado |
502 | Gateway ruim |
503 | Serviço não disponível |
504 | Tempo limite de gateway |
505 | Versão http não suportada |
506 | A variante também negocia |
507 | Armazenamento insuficiente |
508 | Loop detectado |
509 | Limite de largura de banda excedido |
510 | Não estendido |
511 | Autenticação de rede necessária |
520 | Erro desconhecido |
521 | O servidor da web está baixo |
522 | Conexão cronometrada |
523 | A origem é inacessível |
524 | Um tempo limite ocorreu |
525 | SSL Handshake falhou |
526 | Certificado SSL inválido |
527 | Erro de pista ferroviária |
529 | O site está sobrecarregado |
530 | O site está congelado |
540 | Desativado temporariamente |
561 | Não autorizado |
598 | Erro de tempo limite de leitura de rede |
599 | Erro de tempo limite de conexão de rede |
783 | Token inesperado |
Você pode consultar o motivo da frase para códigos de status da seguinte forma:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server ErrorSe nenhum código de status for especificado, tudo será impresso:
$ 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
...Você também pode imprimir códigos de status por classes de resposta:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... Se você deseja contribuir com este projeto, tudo o que você precisa fazer é clonar o repositório do GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitEm seguida, use o BLD para construir:
cd HttpStatus
./bld compileO projeto possui uma estrutura do projeto Intellij Idea. Você pode simplesmente abri -lo depois que todas as dependências foram baixadas e examinar o código.