我正在使用JSF开发Web应用程序。我尽我所能进行了测试,但是有时会抛出运行时异常。
因此,如何在每次引发异常时将用户重定向到特殊错误页面(而不是在显示完整tomcat日志时显示500错误)?
只需声明一个<error-page>in web.xml即可在其中指定可以在特定Throwable(或其任何子类)或HTTP状态代码上显示的页面。例如
<error-page>
web.xml
Throwable
<error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page>
它会在的任何子类上显示错误页面java.lang.Exception,但不会在java.lang.Throwable或上显示错误页面java.lang.Error。这样,您可以针对任何类型的错误创建自己的错误页面Throwable。例如java.sql.SQLException,java.io.IOException依此类推。
java.lang.Exception
java.lang.Throwable
java.lang.Error
java.sql.SQLException
java.io.IOException
要么,
<error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page>
它将在HTTP 500错误上显示错误页面,但是您也可以为404(未找到页面),403(禁止)等指定其他页面。
如果<%@page isErrorPage="true" %>在顶部声明error.jsp,则可以在EL中访问引发的Exception(因此也包括其所有的获取方法)${exception}。
<%@page isErrorPage="true" %>
error.jsp
Exception
${exception}
<p>Message: ${exception.message}</p>
另请参阅关于该主题的Java EE 5教程。