我要实现用Servlet来处理错误信息,返回友好的错误提示页面
同样的代码,在我的机器上就不好使,报404错误,而到别人的机器上就正确显示,很是郁闷,以下是代码段
package
ccsos;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HttpErrorHandlerServlet extends HttpServlet ... {
private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException ...{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
Integer status_code=(Integer)request.getAttribute("javax.servlet.error.status_code");
out.println("<HTML>");
out.println(" <HEAD><TITLE>错误页面</TITLE></HEAD>");
out.println(" <BODY>");
switch(status_code)...{
case 401:
out.println("<h2>HTTP状态代码: "+status_code+"</h2>");
out.println("您无权访问该页面.");
out.println("<p>如有其它问题,请<a href=mailto:zsgzs.com@gmail.com>联系管理员</a>");
break;
case 404:
out.println("<h2>HTTP状态代码: "+status_code+"</h2>");
out.println("您所访问的页面并不存在,或者已经被移动到其他位置.<p>");
out.println("如有其它问题,请<a href=mailto:zsgzs.com@gmail.com>联系管理员</a>");
break;
default:
break;
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HttpErrorHandlerServlet extends HttpServlet ... {
private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException ...{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
Integer status_code=(Integer)request.getAttribute("javax.servlet.error.status_code");
out.println("<HTML>");
out.println(" <HEAD><TITLE>错误页面</TITLE></HEAD>");
out.println(" <BODY>");
switch(status_code)...{
case 401:
out.println("<h2>HTTP状态代码: "+status_code+"</h2>");
out.println("您无权访问该页面.");
out.println("<p>如有其它问题,请<a href=mailto:zsgzs.com@gmail.com>联系管理员</a>");
break;
case 404:
out.println("<h2>HTTP状态代码: "+status_code+"</h2>");
out.println("您所访问的页面并不存在,或者已经被移动到其他位置.<p>");
out.println("如有其它问题,请<a href=mailto:zsgzs.com@gmail.com>联系管理员</a>");
break;
default:
break;
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
我的环境是:JDK1.6.01+MyEclipse6.0.0M1+Tomcat6.0, 输入一个不存在的地址:显示
之后我换了环境也不好使JDK1.5.06+MyEclipse5.0+Tomcat5.0.28
但在我朋友的机器上,用JDK1.5.06+MyEclipse5.0+Tomcat5.0.28环境成功了,以下是截图:
以下是web.xml配置:
<?
xml version="1.0" encoding="GB18030"
?>
< 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 > 401 </ error-code >
< location > /HttpErrorHandlerServlet </ location >
</ error-page >
< error-page >
< error-code > 404 </ error-code >
< location > /HttpErrorHandlerServlet </ location >
</ error-page >
< servlet >
< servlet-name > HttpErrorHandlerServlet </ servlet-name >
< servlet-class > ccsos.HttpErrorHandlerServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > HttpErrorHandlerServlet </ servlet-name >
< url-pattern > /HttpErrorHandlerServlet </ url-pattern >
</ servlet-mapping >
< welcome-file-list >
< welcome-file > login.html </ welcome-file >
</ welcome-file-list >
</ web-app >
< 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 > 401 </ error-code >
< location > /HttpErrorHandlerServlet </ location >
</ error-page >
< error-page >
< error-code > 404 </ error-code >
< location > /HttpErrorHandlerServlet </ location >
</ error-page >
< servlet >
< servlet-name > HttpErrorHandlerServlet </ servlet-name >
< servlet-class > ccsos.HttpErrorHandlerServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > HttpErrorHandlerServlet </ servlet-name >
< url-pattern > /HttpErrorHandlerServlet </ url-pattern >
</ servlet-mapping >
< welcome-file-list >
< welcome-file > login.html </ welcome-file >
</ welcome-file-list >
</ web-app >