404、500页面配置,web.xml配置404、500错误

今天接到个任务,配置平台404、500错误页面等。以前没做过,开始以为需要点时间才能搞定。最后发现好简单,做个记录

首先肯定要有404/500页面:



随后在web.xml配置一下:


如果需要拷贝代码复制下面的:

	<error-page>
		<error-code>404</error-code>
		<location>/WEB-INF/jsp/404.jsp</location>
	</error-page>
	<error-page>
		<exception-type>java.lang.Throwable</exception-type>
		<location>/WEB-INF/jsp/500.jsp</location>
	</error-page>
	<error-page>
		<error-code>500</error-code>
		<location>/WEB-INF/jsp/500.jsp</location>
	</error-page>


exception-type我使用的是java.lang.Throwable,当然也可以是Exception、NullPointerException等异常,出现什么异常类型就会跳转相应的页面。

1、不管是exception-type还是error-code,location指定的路径必须是/开头,也就是说它是对应web应用根的。tomcat默认的是webapp下。

2、一个error-page标签下只能有一个exception-type或error-code,我这里分开写了3个error-page。

3、exception-type比error-code优先级更高

4、容器会为错误页面提供一个exception对象,不过要想在错误页面里访问这个对象,必须在错误页面里指定isErrorPage属性: isErrorPage="true" 然后,在scriptlet中就可以使用隐式对象exception,在EL中可以使用EL隐式对象${pageContext.exception}



如果是jsp页面需要在页面加上isErrorPage="true"(html页面不用加),如果不加会跳到浏览器自身的404/500页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%>
<% response.setStatus(HttpServletResponse.SC_OK);%>


随手一笔,错误之处还望指出


补充:

1、用ajax的时候,发生exception等错误不会跳页面,可能是因为ajax异步的原因,ajax还是会执行完并且不会跳转页面。像一下截图一样,返回出来的页面是500页面,但实际的页面还是ajax那个页面


上图最右侧那块是500页面的


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2、如果是像非异步普通请求,比如下面截图那种,就会跳转到500页面



3、如果是try {} catch (Exception e) {e.printStackTrace();}发生错误也不会跳转页面,进catch块


像上面1和3不跳转的,自己做处理或response.sendRedirect("/error/500");等!


猜你喜欢

转载自blog.csdn.net/ypp91zr/article/details/78904264