2011-05-24 11 views
6

Sé que puede especificar las páginas de error en web.xml de la siguiente maneraun mecanismo genérico para hacer frente a los códigos de estado HTTP

<error-page> 
    <error-code>404</error-code> 
    <location>/404.html</location> 
</error-page> 

Me resulta un poco tedioso a la lista una página para cada código de error. Me preguntaba cuál sería la mejor práctica común en esta situación. ¿Existe una mejor manera de generar estas páginas automáticamente, como usar un JSP o servlet o mediante Spring o Stripes?

Respuesta

0

Stripes ofrece algunas formas extensibles pero simples de manejar excepciones. Hay un buen informe on the stripes website y algunas páginas en el Stripes book al respecto.

Básicamente implementará la interfaz ExceptionHandler, extenderá desde DefaultExceptionHandler (lo que típicamente hemos hecho) o DelegatingExceptionHandler para situaciones más avanzadas.

+0

Esto solo cubre el error HTTP 500. Otros errores 5nn y 4nn no son causados ​​por excepciones per se. – BalusC

+0

Pensé que era relevante, ya que OP preguntó sobre códigos de error además de 404. Esto cubriría la mayoría de los 404, ya que el interceptor Stripes intenta enlazar la mayoría de las URL y arroja su propio 404 si un bean de acción, jsp o recurso estático no es encontró. – lucas

2

Si está hablando de la generación de la página en sí, puede asignar un código de error a una página jsp, p.

<error-page> 
    <error-code>404</error-code> 
    <location>/errors.jsp</location> 
</error-page> 
<error-page> 
    <error-code>500</error-code> 
    <location>/errors.jsp</location> 
</error-page> 

si estamos hablando acerca de la asignación de sí mismo, una solución posible (aunque te aconsejo que utilizar el mapeo Web.xml estándar) para evitar el mapeo de todos los códigos de error es utilizar un filtro de servlet cuales filtra todos los recursos, delega el acceso a FilterChain y comprueba el conjunto de códigos de respuesta si no es 200 (o cualquier otra respuesta aceptable predefinida como 401) y que redirige a la página errors.jsp.

Para capturar el código de respuesta, deberá ajustar el HttpServletResponse con una implementación HttpServletResponseWrapper que guarda el conjunto de códigos de respuesta.

+0

Para acceder al código de estado de la respuesta, usaría http://stackoverflow.com/questions/1302072/how-can-i-get-the-http-status-code-out-of-a-servletresponse-in- a-servletfilter (esto es lo que sugirió, pero con una implementación detallada). –

+0

@eneveu, Exactamente – Asaf

Cuestiones relacionadas