`

Tomcat中404/500 错误,自定义错误页面

阅读更多

Tomcat中404/500 错误,自定义错误页面

 

当服务器出现404、500错误时候希望能够给用户友好的现实界面
只需要在项目的web.xml中添加一些配置

 

<!-- 400错误 -->
<error-page>
<error-code>400</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 404 页面不存在错误 -->
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<!-- 500 服务器内部错误 -->
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<!-- java.lang.Exception异常错误,依据这个标记可定义多个类似错误提示 -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<!-- java.lang.NullPointerException异常错误,依据这个标记可定义多个类似错误提示 -->
<error-page>
<exception-type>java.lang.NullPointerException </exception-type>
<location>/error.jsp</location>
</error-page>

<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/error.jsp</location>
</error-page>

 

 

具体的如下:

Tomcat 的错误页面是由 org.apache.catalina.valves.ErrorReportValve 类输出来的。如果想自定义错误页面,不需要修改该类。Servlet 规范声明了相关的API,只需要在每个 web 应用的 web.xml 里定义。可按照错误类型、错误代码配置。例如:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

<display-name>Welcome to Tomcat</display-name>
<description>
     Welcome to Tomcat
</description>

<error-page>
<error-code>404</error-code>
<location>/errorpages/404.jsp</location>
</error-page>  

<error-page>
  <exception-type>java.lang.Exception</exception-type>
  <location>/errorpages/exception.jsp</location>
 </error-page>


</web-app>

注意错误页面必须以“/”开头,这样任何path的404错误页面及exception错误都会映射到这两个文件。然后在本web引用的errorpages下面放置404.jsp, exception.jsp两个文件。

错误页面 404.jsp:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<html>
<header>
<title>404 page</title>
<body>

<pre>
<%
    Enumeration<String> attributeNames = request.getAttributeNames();
    while (attributeNames.hasMoreElements())
    {
        String attributeName = attributeNames.nextElement();
        Object attribute = request.getAttribute(attributeName);
   out.println("request.attribute['" + attributeName + "'] = " + attribute); 
    }
%>
</pre>

代码中输出了所有的 request 中的变量。从中也可以看到访问哪个文件出错,跳到哪个错误页面了,从而进行更详细、更人性化的错误处理。例如,提示可能的正确网址等等。

例如:访问一个不存在的页面 page_not_exist.html,显示的信息为:

request.attribute['javax.servlet.forward.request_uri'] = /page_not_exists.html
request.attribute['javax.servlet.forward.context_path'] = 
request.attribute['javax.servlet.forward.servlet_path'] = /page_not_exists.html
request.attribute['javax.servlet.forward.path_info'] = /errorpages/404.jsp
request.attribute['javax.servlet.error.message'] = /page_not_exists.html
request.attribute['javax.servlet.error.status_code'] = 404
request.attribute['javax.servlet.error.servlet_name'] = default
request.attribute['javax.servlet.error.request_uri'] = /page_not_exists.html

注意,该错误页面必须大于512字节,否则IE将不予显示。因为IE默认只显示大于512字节的错误页面。Firefox中正常显示。可以添加一些其他信息,将页面大小扩充到512字节以上。如果仍不能显示,请检查IE设置,将该选项选中。


异常处理页面 exception.jsp:

<%@ page contentType="text/html; charset=UTF-8" isErrorPage="true" %>
<%@ page import="java.io.*" %>
<html>
<header>
<title>exception page</title>
<body>
<hr/>
<pre>
<%
response.getWriter().println("Exception: " + exception); 

if(exception != null)
{
   response.getWriter().println("<pre>"); 
   exception.printStackTrace(response.getWriter()); 
   response.getWriter().println("</pre>"); 
}

response.getWriter().println("<hr/>"); 
%>

注意isErrorPage熟悉必须为true,才能使用exception对象。exception即捕捉到的异常。此处可以对exception进行处理,比如记录日志、重定向等等。这里把exception trace打印出来了。

500、505 等错误页面的处理类似于404。

分享到:
评论

相关推荐

    web工程中404/500错误页面配置+404页面模板

    这里,`/path/to/custom/404.html`和`/path/to/custom/500.html`应替换为实际存放自定义错误页面的路径。 在Tomcat等Java Web服务器中,我们需要在`web.xml`部署描述符中配置错误页面: ```xml &lt;error-code&gt;404...

    在Tomcat中配置404自定义错误页面详解

    主要介绍了在Tomcat中配置404自定义错误页面全解,需要的朋友可以参考下

    404,500错误页面设计

    例如,在Tomcat服务器中,可以在`web.xml`配置文件中添加如下代码来设置404和500错误页面: ```xml &lt;error-code&gt;404&lt;/error-code&gt; &lt;location&gt;/404.htm&lt;/location&gt; &lt;/error-page&gt; &lt;error-code&gt;500&lt;/error-code&gt;...

    struts2 跳转至404 页面的解决方案

    7. **错误处理配置**:Struts2允许自定义错误页面。检查`struts-default.xml`或自定义的配置文件,确认404错误是否被正确地映射到了一个自定义的错误页面。 8. **IDE或服务器设置**:有时候,开发环境或服务器的...

    jsp(Tomcat)中errorPage不能使用的原因解决方法,Jsp技术文章,JSP系列教程,Jsp.htm.rar

    这段配置表示当出现404错误时,Tomcat会尝试显示`/errorPages/404.jsp`页面。 `errorPage`无法使用可能有以下几个原因: 1. **配置问题**:检查`web.xml`文件的语法是否正确,确保没有拼写错误、未闭合的标签或者...

    Tomcat-9.0-API

    10. **错误处理**:Tomcat提供了一套机制来处理运行时错误和异常,如`ErrorReportValve`和错误页面配置。开发者可以通过API文档了解如何自定义错误报告和处理策略。 通过深入学习和理解Tomcat-9.0-API文档,开发者...

    tomcat中文帮助文档

    通过`web.xml`中的`error-page`元素,你可以自定义错误页面,处理HTTP状态码或特定异常。 11. **Servlet与JSP** Tomcat作为Servlet和JSP容器,处理HTTP请求并执行相应的Servlet或JSP页面。了解Servlet生命周期和...

    tomcat异常配置

    - 在Tomcat的`conf/web.xml`文件中,你可以找到并编辑`&lt;error-page&gt;`元素来定义特定的错误代码和对应的错误页面。例如,要为404错误指定一个页面,你可以添加以下代码: ``` &lt;error-code&gt;404&lt;/error-code&gt; ...

    struts2完全捕获404错误的方法

    4. **自定义错误页面**: 创建一个404错误页面,如`/error/404.jsp`,展示给用户友好的错误信息。你可以在页面中包含通用的错误提示,也可以根据需要动态获取更多信息。 5. **测试和调试**: 访问一个不存在的URL...

    apache-tomcat-7.0.85.tar.gz

    可以自定义错误页面,通过在`web.xml`中配置`error-page`元素,实现特定错误代码的定制响应。 11. **JSP与Servlet** Tomcat作为Servlet容器,支持JSP的编译和执行。开发者可以创建`.jsp`文件,Tomcat会在首次请求...

    apache-tomcat-6.0.24

    3. **在MyEclipse中配置Tomcat**:通过MyEclipse的服务器视图添加新的服务器,选择Apache Tomcat 6.0,然后指定Tomcat的安装路径。 4. **部署Web应用**:将项目右键点击,选择“发布”或“部署”到已配置的Tomcat...

    Tomcat7.0 tomcat最新版本

    9. **错误处理**:Tomcat 7.0改进了错误页面处理,可以自定义错误页面并提供更友好的错误报告,便于开发者调试。 10. **国际化支持**:Tomcat 7.0增强了对多语言环境的支持,使得全球化的Web应用部署更为方便。 ...

    3、TOMCAT的基础配置进阶篇

    例如,配置`&lt;error-code&gt;404&lt;/error-code&gt;`和`&lt;location&gt;/404.html&lt;/location&gt;`可以让你的404错误页面更加友好和专业。 - **Servlet配置**:`&lt;servlet&gt;`和`&lt;servlet-mapping&gt;`元素用于注册Servlet和映射URL路径,...

    tomcat6的源码

    10. **错误处理**:当发生错误时,Tomcat会生成定制的错误页面。源码中,`ErrorReportValve`类处理错误报告的生成。 通过分析这个源码包,开发者不仅可以了解Tomcat的工作原理,还能学习到Java服务器编程的最佳实践...

    apache-tomcat-8.5.59版本

    Apache Tomcat是一款开源的Java Servlet容器,主要用于实现Java EE中的Web应用服务。在这个"apache-tomcat-8.5.59"版本中,我们关注的是Tomcat的8.5.x系列,这是一个稳定且广泛使用的分支。这个版本适用于Windows 64...

    apache-tomcat-7.0.68

    10. **Configurable Error Pages**:允许开发者自定义错误页面,以提供更友好的用户体验。 在解压"apache-tomcat-7.0.68"压缩包后,你会得到一系列目录和文件,包括`bin`(包含启动和停止Tomcat的脚本)、`conf`...

    Tomcat安全部署配置手册

    为了避免泄露这些信息,可以通过自定义错误页面来解决这个问题。具体步骤如下: - 打开`{Tomcat安装目录}/conf/web.xml`文件; - 在文件末尾附近添加以下内容: ```xml &lt;error-code&gt;404&lt;/error-code&gt; ...

    Tomcat8源代码

    深入研究Tomcat 8的源代码,不仅可以帮助我们理解其内部工作流程,还能为自定义Tomcat配置、优化性能或开发基于Tomcat的应用提供宝贵的经验。同时,通过阅读源代码,开发者可以学习到Java Web技术、设计模式以及并发...

Global site tag (gtag.js) - Google Analytics