zoukankan      html  css  js  c++  java
  • Servlet 异常处理

    当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置。

    您必须在 web.xml 中使用 error-page 元素来指定对特定异常 或 HTTP 状态码 作出相应的 Servlet 调用。

    web.xml 配置

    假设,有一个 ErrorHandler 的 Servlet 在任何已定义的异常或错误出现时被调用。以下将是在 web.xml 中创建的项。

    <!-- servlet 定义 -->
    <servlet>
            <servlet-name>ErrorHandler</servlet-name>
            <servlet-class>ErrorHandler</servlet-class>
    </servlet>
    <!-- servlet 映射 -->
    <servlet-mapping>
            <servlet-name>ErrorHandler</servlet-name>
            <url-pattern>/ErrorHandler</url-pattern>
    </servlet-mapping>
    
    <!-- error-code 相关的错误页面 -->
    <error-page>
        <error-code>404</error-code>
        <location>/ErrorHandler</location>
    </error-page>
    <error-page>
        <error-code>403</error-code>
        <location>/ErrorHandler</location>
    </error-page>
    
    <!-- exception-type 相关的错误页面 -->
    <error-page>
        <exception-type>
              javax.servlet.ServletException
        </exception-type >
        <location>/ErrorHandler</location>
    </error-page>
    
    <error-page>
        <exception-type>java.io.IOException</exception-type >
        <location>/ErrorHandler</location>
    </error-page>

    如果您想对所有的异常有一个通用的错误处理程序,那么应该定义下面的 error-page,而不是为每个异常定义单独的 error-page 元素:

    <error-page>
        <exception-type>java.lang.Throwable</exception-type >
        <location>/ErrorHandler</location>
    </error-page>

    以下是关于上面的 web.xml 异常处理要注意的点:

    • Servelt ErrorHandler 与其他的 Servelt 的定义方式一样,且在 web.xml 中进行配置。
    • 如果有错误状态代码出现,不管为 404(Not Found 未找到)或 403(Forbidden 禁止),则会调用 ErrorHandler 的 Servlet。
    • 如果 Web 应用程序抛出 ServletException 或 IOException,那么 Web 容器会调用 ErrorHandler 的 Servlet。
    • 您可以定义不同的错误处理程序来处理不同类型的错误或异常。上面的实例是非常通用的,希望您能通过实例理解基本的概念。

    请求属性 - 错误/异常

    以下是错误处理的 Servlet 可以访问的请求属性列表,用来分析错误/异常的性质。

    序号属性 & 描述
    1 javax.servlet.error.status_code
    该属性给出状态码,状态码可被存储,并在存储为 java.lang.Integer 数据类型后可被分析。
    2 javax.servlet.error.exception_type
    该属性给出异常类型的信息,异常类型可被存储,并在存储为 java.lang.Class 数据类型后可被分析。
    3 javax.servlet.error.message
    该属性给出确切错误消息的信息,信息可被存储,并在存储为 java.lang.String 数据类型后可被分析。
    4 javax.servlet.error.request_uri
    该属性给出有关 URL 调用 Servlet 的信息,信息可被存储,并在存储为 java.lang.String 数据类型后可被分析。
    5 javax.servlet.error.exception
    该属性给出异常产生的信息,信息可被存储,并在存储为 java.lang.Throwable 数据类型后可被分析。
    6 javax.servlet.error.servlet_name
    该属性给出 Servlet 的名称,名称可被存储,并在存储为 java.lang.String 数据类型后可被分析。
  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/borter/p/9538170.html
Copyright © 2011-2022 走看看