【转】web.xml 配置404和500异常的自定义页面
【转】web.xml 配置404和500错误的自定义页面
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <error-page>
- <error-code>404</error-code>
- <location>/building.jsp</location>
- </error-page>
- <error-page>
- <error-code>500</error-code>
- <location>/error.jsp</location>
- </error-page>
- </web-app>
JSP页面的关键在于
1 isErrorPage="true"
2 response.setStatus(HttpServletResponse.SC_OK);
building.jsp
- <%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>
- <%response.setStatus(HttpServletResponse.SC_OK);
- %>
- <%
- /**
- * 本页面是在客户查找的页面无法找到的情况下调用的
- */
- response.setStatus(HttpServletResponse.SC_OK);
- %>
- <body>
- 正在制作... <a href="javascript:history.go(-1)">返回</a>
- <br/>
- 也可能页面连接更改了,请按 F5 键刷新整个页面看看,特别是菜单!
- </body>
error.jsp
- <%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%>
- <%@ page import="java.io.*,java.util.*"%>
- <%response.setStatus(HttpServletResponse.SC_OK);
- %>
- <body>
- 程序发生了错误,有可能该页面正在调试或者是设计上的缺陷.<br/>
- 你可以选择<br/> <a href=<%=request.getContextPath()+"/forum/new.jsp" %>>反馈</a>
- 提醒我... 或者<br/><a href="javascript:history.go(-1)">返回上一页</a>
- <hr width=80%>
- <h2><font color=#DB1260>JSP Error Page</font></h2>
- <p>An exception was thrown: <b> <%=exception.getClass()%>:<%=exception.getMessage()%></b></p>
- <%
- System.out.println("Header....");
- Enumeration<String> e = request.getHeaderNames();
- String key;
- while(e.hasMoreElements()){
- key = e.nextElement();
- System.out.println(key+"="+request.getHeader(key));
- }
- System.out.println("Attribute....");
- e = request.getAttributeNames();
- while(e.hasMoreElements()){
- key = e.nextElement();
- System.out.println(key+"="+request.getAttribute(key));
- }
- System.out.println("Parameter....");
- e = request.getParameterNames();
- while(e.hasMoreElements()){
- key = e.nextElement();
- System.out.println(key+"="+request.getParameter(key));
- }
- %>
- 111<%=request.getAttribute("javax.servlet.forward.request_uri") %><br>
- <%=request.getAttribute("javax.servlet.forward.servlet_path") %>
- <p>With the following stack trace:</p>
- <pre>
- <%exception.printStackTrace();
- ByteArrayOutputStream ostr = new ByteArrayOutputStream();
- exception.printStackTrace(new PrintStream(ostr));
- out.print(ostr);
- %>
- </pre>
- <hr width=80%>
- </body>
转自:http://blog.****.net/java2000_net/archive/2007/12/29/2000965.aspx