当应用程序出现错误的时候,如果没有做错误页面处理的话,会直接输出一些敏感的信息出来(如系统信息,中间件信息,查询语句等),有时候甚至会直接将项目所在的物理路径给显示出来,严重危害了系统安全,并且错误种类繁多,页面风格不一,导致用户体验不好,本文介绍如何在web项目中创建错误页面,从而友好的提示错误信息。
1、通过错误码来配置error-page
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
上述代码配置了当系统发生500错误(即服务器内部错误)时,跳转到错误处理页面error.jsp。
我们可以在web.xml中配置比较全面的异常处理代码,web.xml中关于error-page的定义如下:
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>414</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>505</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>400</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
看样子貌似几乎所有常见的服务器端的异常都被覆盖到了,出现这些异常的时候页面会跳转到error.jsp中。但是这样就够了吗,显然是不够的,试想当系统出现空指针异常,且这些异常都只是被抛出来而没有得到非常妥当的处理时,将不会适配到上述任何配置,这时前端用户将会面对一大段异常文本而不知所措(同时还泄露了很多服务器的敏感信息),这时可以通过异常的类型来配置error-page。
2、通过异常的类型配置error-page
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
上述代码配置了当系统发生java.lang.NullException(即空指针异常)时,跳转到错误处理页面error.jsp。当然我们也可以直接配置java.lang.Exception,这样所有的Exception异常都会被适配到。
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
评论区