Servlet异常处理
1.Servlet 异常处理
使用场景:
当一个 Servlet 抛出一个异常时,Web 容器在使用了 exception-type 元素的 web.xml 中搜索与抛出异常类型相匹配的配置。web.xml 中使用 error-page 元素来指定对特定异常 或 HTTP 状态码 作出相应的 Servlet 调用。
2.web.xml 配置
假设,有一个 ErrorHandler 的 Servlet 在任何已定义的异常或错误出现时被调用。以下将是在 web.xml 中创建的项。
1 <!-- servlet 定义 --> 2 3 <servlet> 4 5 <servlet-name>ErrorHandler</servlet-name> 6 7 <servlet-class>ErrorHandler</servlet-class> 8 9 </servlet> 10 11 <!-- servlet 映射 --> 12 13 <servlet-mapping> 14 15 <servlet-name>ErrorHandler</servlet-name> 16 17 <url-pattern>/ErrorHandler</url-pattern> 18 19 </servlet-mapping> 20 21 22 23 <!-- error-code 相关的错误页面 --> 24 25 <error-page> 26 27 <error-code>404</error-code> 28 29 <location>/ErrorHandler</location> 30 31 </error-page> 32 33 <error-page> 34 35 <error-code>403</error-code> 36 37 <location>/ErrorHandler</location> 38 39 </error-page> 40 41 42 43 <!-- exception-type 相关的错误页面 --> 44 45 <error-page> 46 47 <exception-type> 48 49 javax.servlet.ServletException 50 51 </exception-type > 52 53 <location>/ErrorHandler</location> 54 55 </error-page> 56 57 58 59 <error-page> 60 61 <exception-type>java.io.IOException</exception-type > 62 63 <location>/ErrorHandler</location> 64 65 </error-page>
如果您想对所有的异常有一个通用的错误处理程序,那么应该定义下面的 error-page,而不是为每个异常定义单独的 error-page 元素:
<error-page> <exception-type>java.lang.Throwable</exception-type > <location>/ErrorHandler</location> </error-page>
在 web.xml 文件中添加如下配置来处理异常:
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <web-app> 4 5 <servlet> 6 7 <servlet-name>ErrorHandler</servlet-name> 8 9 <servlet-class>com.sxt.test.ErrorHandler</servlet-class> 10 11 </servlet> 12 13 <!-- servlet mappings --> 14 15 <servlet-mapping> 16 17 <servlet-name>ErrorHandler</servlet-name> 18 19 <url-pattern>/TomcatTest/ErrorHandler</url-pattern> 20 21 </servlet-mapping> 22 23 <error-page> 24 25 <error-code>404</error-code> 26 27 <location>/TomcatTest/ErrorHandler</location> 28 29 </error-page> 30 31 <error-page> 32 33 <exception-type>java.lang.Throwable</exception-type > 34 35 <location>/ErrorHandler</location> 36 37 </error-page> 38 39 </web-app>
现在,尝试使用一个会产生异常的 Servlet,或者输入一个错误的 URL,这将触发 Web 容器调用 ErrorHandler 的 Servlet,并显示适当的消息。