如何确保用户没有看到任何丑陋的堆栈跟踪,并根据异常或服务器故障(如使用jsp的Java Web应用程序中找不到404)将用户重定向到某个适当的页面?
答案 0 :(得分:2)
实现这一目标的方法很少。
在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中的指令类似于覆盖 web.xml。
希望它有所帮助!