一、Servlet异常处理
当一个Servlet抛出一个异常时,Web容器在使用了exception-type元素的web.xml中搜索与抛出异常类型相匹配的配置。
必须在web.xml中使用error-page元素来指定对特定一场或HTTP状态码作出相应的Servlet调用。
web.xml配置
假设,有一个 ErrorHandler 的 Servlet 在任何已定义的异常或错误出现时被调用。以下将是在 web.xml 中创建的项。
<servlet>
<servlet-name>ErrorHandler</servlet-name>
<servlet-class>ErrorHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ErrorHandler</servlet-name>
<url-pattern>/ErrorHandler</url-pattern>
<servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/ErrorHandler</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/ErrorHandler</location>
</error-page>
<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>
以下是web.xml异常处理要注意的点:
- Servlet ErrorHandler与其他的Servlet的定义方式一样,且在web.xml中进行配置。
- 如果有错误状态代码出现,不管为 404(Not Found 未找到)或 403(Forbidden 禁止),则会调用ErrorHandler的Servlet。
- 如果Web应用程序抛出ServletException或IOException,那么Web容器会调用ErrorHandler的Servlet
- 您可以定义不同的错误处理程序来处理不同类型的错误或异常。
二、Servlet Cookie处理
Cookie是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。
识别返回用户包括三个步骤:
- 服务器脚本向浏览器发送一组Cookie。例如:姓名、年龄或识别号码等。
- 浏览器将这些信息存储在本地计算机上,以备将来使用。
- 当下一次浏览器向Web服务器发送任何请求时,浏览器会把这些Cookie信息发送到服务器,服务器将使用这些信息来识别用户。
Servlet Cookie处理需要对中文进行编码与解码,方法如下:
String str = java.net.URLEncoder.encode("中文","UTF-8"); //编码
String str = java.net.URLEncoder.encode("编码后的字符串","UTF-8"); //解码
Cookie剖析
Cookie通常设置在HTTP头信息中(虽然JavaScript也可以直接在浏览器上设置一个Cookie)。设置Cookie的Servlet会发送如下的头信息:
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=runoob.com
Connection: close
Content-Type: text/html
Set-Cookie头包含了一个名称值对、一个GMT日期、一个路径和一个域。名称和值会被URL编码。expires 字段是一个指令,告诉浏览器在给定的时间和日期之后"忘记"该 Cookie。
Servlet就能够通过请求方法request.getCookie()访问Cookie,该方法将返回一个Cookie对象的数组。
Servlet Cookie方法
通过Servlet设置Cookie
通过Servlet设置Cookie包括三个步骤:
(1)创建一个Servlet