Servlet异常处理
1. 声明异常处理
声明两种错误处理:HTTP错误代码的处理 和 指定程序中产生的java异常的处理。
在web.xml文件中声明对各种异常的处理方法。
元素结构:
<error-page>
|____<error-code> or <exception-type>
|
|____<location>
<error-code>: 制定错误代码。
<exception-type>: 制定java异常类的完整限定名。
<location>: 给出用于响应HTTP错误代码或者Java异常的资源的路径。
HTTP异常的处理
利用web.xml静态设置错误响应
[code]<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Test My Servlet</display-name>
<description>
Test My Servlet
</description>
<error-page>
<error-code>404</error-code>
<location>/myjsp/error.html</location>
</error-page>
</web-app>[/code]我测试发现不行!
我们也可以将error.html改为一个Servlet类来处理。
Servlet容器在请求对象中设置的属性
属性名字 属性类型 属性说明
[code]javax.servlet.error.status_code: Integer HTTP协议的状态代码
javax.servlet.error.exception_type: Class 未捕获异常的Class类的对象
javax.servlet.error.message: String 传递给sendError()方法的消息
javax.servlet.error.exception: Throwable 调用错误页面的未捕获异常
javax.servlet.error.request_uri: String 当前请求的URI
javax.servlet.error.servlet_name: String 导致错误页面被调用的Servlet的名字[/code]
java程序中产生的异常处理
将上面web.xml的<error-code>改为<exception-type>后,输入类似:
<exception-type>java.io.FileNotFoundException</exception-type>
当文件找不到时捕获这个异常并通过<location>去调用处理。
最后,HttpServletResponse里面有HTTP协议所定义的web响应数字。
利用ServletRequest 的getRequestDispatcher()得到getRequestDispatcher对象,
调用forward()方法去调用另一个Servlet类。
1. 声明异常处理
声明两种错误处理:HTTP错误代码的处理 和 指定程序中产生的java异常的处理。
在web.xml文件中声明对各种异常的处理方法。
元素结构:
<error-page>
|____<error-code> or <exception-type>
|
|____<location>
<error-code>: 制定错误代码。
<exception-type>: 制定java异常类的完整限定名。
<location>: 给出用于响应HTTP错误代码或者Java异常的资源的路径。
HTTP异常的处理
利用web.xml静态设置错误响应
[code]<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Test My Servlet</display-name>
<description>
Test My Servlet
</description>
<error-page>
<error-code>404</error-code>
<location>/myjsp/error.html</location>
</error-page>
</web-app>[/code]我测试发现不行!
我们也可以将error.html改为一个Servlet类来处理。
Servlet容器在请求对象中设置的属性
属性名字 属性类型 属性说明
[code]javax.servlet.error.status_code: Integer HTTP协议的状态代码
javax.servlet.error.exception_type: Class 未捕获异常的Class类的对象
javax.servlet.error.message: String 传递给sendError()方法的消息
javax.servlet.error.exception: Throwable 调用错误页面的未捕获异常
javax.servlet.error.request_uri: String 当前请求的URI
javax.servlet.error.servlet_name: String 导致错误页面被调用的Servlet的名字[/code]
java程序中产生的异常处理
将上面web.xml的<error-code>改为<exception-type>后,输入类似:
<exception-type>java.io.FileNotFoundException</exception-type>
当文件找不到时捕获这个异常并通过<location>去调用处理。
最后,HttpServletResponse里面有HTTP协议所定义的web响应数字。
利用ServletRequest 的getRequestDispatcher()得到getRequestDispatcher对象,
调用forward()方法去调用另一个Servlet类。