就在周五快下班的时候,看到测试组的MM们在做着最后的项目测试,一个的404/500高频率的出现,(因为我在加于那个项目组的时候项目做8899了,我也只是做了一下结尾的部分)说真的那项目做的真的不怎么样,很多很多的细节方面的东东都没有考虑到.boss都来敷衍了,唉!我这新来的,也就不了了之了.在那会我就想到了一个问题,有没有捕获301/404/500错误的办法呢!出错了也给一个友好人性化的错误提示吧!!!google一看,网上都一大把,因为元旦嘛!也只是那会在公司查了一下资料看了一下!藐似只需要简单的在web.xml中做简单的配置,也没怎么来实践.所以今下午就来试试牛刀.
1.只需要在web.xml中加上
<error-page> <!--自定义捕获404错误页面--> <error-code>404</error-code> <location>/common/404.jsp</location> </error-page> <error-page> <!--自定义捕获500错误页面--> <error-code>500</error-code> <location>/error.jsp</location> </error-page>
404.jsp页面可以自己来发挥你超强的想象力自己来设计.这是我的:
500.jsp页面
也上网看了一下,一般都是这样来写,这样写一般都可以来精确定位错误.我试了又试的.这里就直接上代码了:
<%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true" pageEncoding="GBK"%> <%@ page import="java.io.*,java.util.*"%> <% response.setStatus(HttpServletResponse.SC_OK); %> <html> <body> 程序发生了错误,有可能该页面正在调试或者是设计上的缺陷. <br /> 你可以选择 <br /> <a href=<%=request.getContextPath() + "/forum/new.jsp"%>>反馈</a> 提醒我... 或者 <font color="red" size="50">自定义500错误页面!!! </font> <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)); } %> <%=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> </html>