最近发现了一个问题,自己解释不清楚,很想请教一下.
昨天随手写了一个小程序来解释JSP内置对象exception的用法,用的环境是MyEclipse5.1,Tomcat 5.5.代码如下:
JSP代码 第1段
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1" errorPage="error.jsp"%>
- >
- <html>
- <head>
- <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- head>
- <body>
- <%
- int i=Integer.parseInt("test");
- %>
- body>
- html>
错误页面也非常的简单,如下:
JSP代码 第2段
- <%@ page language="java" contentType="text/html; charset=gbk"
- pageEncoding="gbk" isErrorPage="true"%>
- <html>
- <head>
- <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- head>
- <body>
- 出现异常
- <font> <%=exception.getMessage()%> font>
- body>
- html>
两个关键属性都留意了,isErrorPage及errorPage,都设置的挺正常的,结果就是HTTP500内部服务器错误,奇怪的是我更改了JSP的代码,如下:
JSP 代码 第3段
- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
- pageEncoding="ISO-8859-1" errorPage="error.jsp"%>
- >
- <html>
- <head>
- <meta http-equiv="Content-Type"
- content="text/html; charset=ISO-8859-1">
- <title>Insert title here</title>
- head>
- <body>
- <%
- out.println("run test");
- %>
- body>
- html>
显示自然是没有问题,然后再运行原来的异常代码,也就是贴上去的第一段代码就没有问题了,弄的我很奇怪,我更换了开发工具,用了JBuilder,同样的代码,用JBuilder内置的IE问题就没有了,用普通的浏览器还是一样的,必须先跑第3段代码,回头再跑第1段才能显示错误页面,实在是想不清楚为什么,有人能帮我解释一下么?我用单独的Tomcat进行部署也是一样的问题,虽然问题可能很简单,但实在是想不明白,麻烦帮忙解释一下啊.
问题已经解决:
是浏览器的问题,将IE中高级里的"显示友好HTTP错误"取消就可以了,谢谢.