【发布时间】:2014-07-13 18:54:57
【问题描述】:
如何确保用户看不到任何丑陋的堆栈跟踪,并根据异常或服务器故障(例如在使用 jsp 的 Java Web 应用程序中找不到 404)将用户重定向到某个适当的页面?
【问题讨论】:
标签: jsp web-applications web.xml
如何确保用户看不到任何丑陋的堆栈跟踪,并根据异常或服务器故障(例如在使用 jsp 的 Java Web 应用程序中找不到 404)将用户重定向到某个适当的页面?
【问题讨论】:
标签: jsp web-applications web.xml
实现这一点的方法很少。
在 web.xml 中你可以有这样的例子:
<error-page>
<error-code>404</error-code>
<location>/notFoundError.jsp</location>
</error-page>
所以只要服务器找不到请求的资源,用户就会被重定向到给定的页面。您也可以在 web.xml 中再次处理这样的异常
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/someOtherPage.jsp</location>
</error-page>
您可以通过以下方式处理所有异常:
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorPage.jsp</location>
</error-page>
此外,在 jsp 文件本身中,您可以有一个这样的 JSP 指令,它将覆盖 web.xml 中的任何内容:
<%@ page errorPage="errorpage.jsp" %>
这意味着如果 jsp 中出现任何问题,则会加载 errorpage.jsp。 errorpage.jsp 还需要一个指令,如下所示,以便 pageWithError.jsp 实际上可以转发到 errorpage.jsp:
<%@ page isErrorPage="true" %>
因此,如果您在 jsps 中有指令(有错误的页面,以及出现错误时将显示的页面),都会考虑到这一点。如果没有,并且发生了一些错误,将查阅 web.xml。还是没有比赛?好吧,然后将显示 404 或堆栈跟踪..
jsp 中的指令类似于 overriding web.xml。
希望对你有帮助!!!
【讨论】: