我正在使用 JSF 开发 Web 应用程序。我尽可能地对其进行了测试,但有时会抛出运行时异常。
那么,如何在每次抛出异常时将用户重定向到特殊错误页面(而不是显示 500 错误并显示完整的 tomcat 日志)?
请您参考如下方法:
只需声明 <error-page>
在web.xml
其中您可以指定应在某个 Throwable
上显示的页面(或其任何子类)或 HTTP status code 。例如
<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
等等。
或者,
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
它将显示 HTTP 500 错误的错误页面,但您也可以为 404(未找到页面)、403(禁止)等指定其他页面。
如果您声明<%@page isErrorPage="true" %>
在 error.jsp
之上,那么你就可以访问抛出的 Exception
(以及它的所有 setter/getter )由 ${exception}
在EL中。
<p>Message: ${exception.message}</p>