web开发中异常信息是很重的信息,对开发人员是其相当重要的,对这些异常信息进行转换为用户能理解的信息就更重要了~
在单纯的JSP开发中,处理异常信息一般使用web.xml来定义。
02 |
<error-code> 400 </error-code> |
03 |
<location>/ 400 .html</location> |
07 |
<error-code> 404 </error-code> |
08 |
<location>/ 404 .html</location> |
12 |
<error-code> 500 </error-code> |
13 |
<location>/error.jsp</location> |
这是很简单的!
如果现在想在页面中设置一个隐藏div来供开发人员查看异常信息呢?
整理下网站说的一些方法:
最常说的:
01 |
<% @page contentType= "text/html;charset=Big5" isErrorPage= "true" %> |
03 |
<head><title>出现错误</title></head> |
05 |
<H1>错误:</H1><%=exception%> |
08 |
exception.printStackTrace(response.getWriter()); |
因为这个页面调用了exception内置对象,所以isErrorPage必须为true。
这个是能打印出异常信息的,但是放入了response中,页面从头就开始打印异常信息,用户不明白异常信息~影响用户使用。
另一种常见方法:
不仅可以使用jsp内置exception对象来取得异常,也可以取得request中的attribute
1 |
<% @page contentType= "text/html;charset=Big5" isErrorPage= "true" %> |
3 |
<head><title>错误信息</title></head> |
5 |
错误码: <%=request.getAttribute( "javax.servlet.error.status_code" )%> <br> |
6 |
信息: <%=request.getAttribute( "javax.servlet.error.message" )%> <br> |
7 |
异常: <%=request.getAttribute( "javax.servlet.error.exception_type" )%> <br> |
同理的还有
<%= exception.getMessage()%>
<%=exception%>
<c:out value="${requestScope[‘javax.servlet.error.message‘]}"/>
这个也可能打印异常信息,但有时只会打印出一个null.没有任何有价值信息。
-----------------------
还有一个特殊情况:
Error Page在IE下不能转发的问题
这是IE自身的设定导致的,经过百度,找到几个解决办法:
1, IE设定 工具-->Internet选项-->高级--->显示http友好错误信息(取消选择) , 这样就可以了
2, 设置指定错误页页状态为正常,来告诉IE这不是一个服务器错误, 从而不显示IE的自定义错误页
<%
response.setStatus(200); // 200 = HttpServletResponse.SC_OK
%>
3, 把错误页做大一点,弄个几百K 就可以显示错误页面 (加一个div块,display设为none就可以了),这个问题比较奇怪.
这个问题我还没有遇到过~先记录在这儿吧~~
现在能符合要求的处理方法是:
01 |
<%@ page language= "java" contentType= "text/html; charset=GB18030" |
02 |
pageEncoding= "GB18030" %> |
04 |
<%@ page isErrorPage= "true" %> //一定要写,不能显示错误 |
06 |
response.setStatus(HttpServletResponse.SC_OK); //这句也一定要写,不然IE不会跳转到该页面 |
07 |
String path=request.getContextPath(); |
12 |
<meta http-equiv= "Content-Type" content= "text/html; charset=GB18030" > |
13 |
<title>Insert title here</title> |
17 |
<div>系统执行发生错误,信息描述如下:</div> |
18 |
<div>错误状态代码是:${pageContext.errorData.statusCode}</div> |
19 |
<div>错误发生页面是:${pageContext.errorData.requestURI}</div> |
20 |
<div>错误信息:${pageContext.exception}</div> |
23 |
<c:forEach var= "trace" items= "${pageContext.exception.stackTrace}" > |
JSP 500页面的异常信息打印,古老的榕树,5-wow.com