Servlet异常处理

Servlet 配置异常处理开发步骤
1.配置对应的异常处理Servlet的Java类
2.在部署文件web.xml中注册异常Servlet
3.在 web.xml 中使用 error-page 元素来指定对特定异常 或 HTTP 状态码 作出相应的 Servlet 调用

请求属性 - 错误/异常

属性 描述
javax.servlet.error.status_code 该属性给出状态码,状态码可被存储,并在存储为 java.lang.Integer 数据类型后可被分析。
javax.servlet.error.exception_type 该属性给出异常类型的信息,异常类型可被存储,并在存储为 java.lang.Class 数据类型后可被分析。
javax.servlet.error.message 该属性给出确切错误消息的信息,信息可被存储,并在存储为 java.lang.String 数据类型后可被分析。
javax.servlet.error.request_uri 该属性给出有关 URL 调用 Servlet 的信息,信息可被存储,并在存储为 java.lang.String 数据类型后可被分析。
javax.servlet.error.exception 该属性给出异常产生的信息,信息可被存储,并在存储为 java.lang.Throwable 数据类型后可被分析。
javax.servlet.error.servlet_name 该属性给出 Servlet 的名称,名称可被存储,并在存储为 java.lang.String 数据类型后可被分析。

Servlet 错误处理程序实例
小案例让你对 Servlet 中的异常处理有基本的了解,您可以使用相同的概念编写更复杂的异常处理应用程序:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ExceptionHandlerServlet")
public class ExceptionHandlerServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取错误状态码
        Integer code=(Integer)req.getAttribute("javax.servlet.error.status_code");
        if(code!=null)resp.getWriter().println("error

"+code+"

"
); //获取异常信息 Throwable t = (Throwable)req.getAttribute("javax.servlet.error.exception"); if(t!=null)resp.getWriter().println("error

"+t+"

"
); } }

在 web.xml 文件中添加如下配置来处理异常:

    
    <servlet>
        <servlet-name>ExceptionHandlerServletservlet-name>
        <servlet-class>exveption.ExceptionHandlerServletservlet-class>
    servlet>
    
    <servlet-mapping>
        <servlet-name>ExceptionHandlerServletservlet-name>
        <url-pattern>/ErrorServlet.dourl-pattern>
    servlet-mapping>

    
    <error-page>
        <error-code>404error-code>
        <location>/ErrorServlet.dolocation>
    error-page>

    
    <error-page>
        <exception-type>java.lang.NumberFormatExceptionexception-type>
        <location>/ErrorServlet.dolocation>
    error-page>

现在,尝试访问任意一个Servlet形成NumberFormatException,或者输入一个错误的URL。这将触发 Web 容器调用 ExceptionHandlerServlet 的 Servlet,并得到相应的响应消息。
例如,如果您输入了一个错误的 URL,那么它将显示下面的结果:

code:404

注意:
如果想对所有的异常有一个通用的错误处理程序,可以这样定义error-page:

<error-page>
    <exception-type>java.lang.Throwableexception-type >
    <location>/ErrorServlet.dolocation>
error-page>

1.Servelt ExceptionHandlerServlet 与其他的 Servelt 的定义方式一样,且在 web.xml 中进行配置。
2.如果有任何错误状态代码出现,不管为 404(Not Found 未找到)或 403(Forbidden 禁止),则会调用 ExceptionHandlerServlet 的 Servlet。
3.如果 Web 应用程序抛出 NumberFormatException,那么 Web 容器会调用 ExceptionHandlerServlet 的 Servlet。您可以定义不同的错误处理程序来处理不同类型的错误或异常。

你可能感兴趣的:(Servlet小总结)