上一篇:如何用servlet在客户端生成一个合成图片 >>
exception 隐含对象
服务器发现错误时,会有自己的一套错误讯息网页以供响应,例如在发生404 Not Found之类的错误时,IIS、Apache、Tomcat等都会有各自不同的网页来响应客户端,而为了要在不同的服务器有一致的错误处理页面外观,我们也可以自行规划错误讯息处理网页,将服务器的那一套替换掉,使用自行的规画,我们实际在web.xml中加入以下的标签作示范:
代码:
<error-page>
<error-code>400</error-code>
<location>/400.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
上面的设定会在服务器发生相对应的错误时,呼叫对应的网页(可以是静态或动态的网页),例如发生404 Not Found时,就会传回404.html给客户端,不过有些浏览器会有自己的错误讯息网页,例如Internet Explorer在接收到404 Not Found时,会使用自己的错误讯息来显示给操作者看。
我们之前曾示范过如何在page指令元素中设定异常处理网页,并利用exception对象来显示相关讯息,这边介绍另一种方式,首先我们要知道任何被Servlet抛出来的异常对象如果没有被Servlet处理,则服务器会负责处理它,处理的方式视不同的服务器而定,如果您想要在发生异常时,能有一致的处理方式,即使是Servlet被部署在不同的服务器上,最好是自行处理异常,处理异常的方式可以使用try-catch-finally或是之前介绍的例外处理网页设定,这是在Servlet内处理例外的方式,如果要将异常丢给服务器处理,而又要自订处理响应页面,则也可以在web.xml中设定,例如我们在web.xml中加入以下的内容:
代码:
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/servletex.jsp</location>
</error-page>
<exception-type>中必须设定异常类别的完整套件名称,而<location>所指的对象可以是静态网页,或是动态网页,如果要利用exception接收异常讯息,则必须设定page指令元素的isErrorPage属性为true,例如:
代码:
<%@page contentType="text/html;charset=Big5" isErrorPage="true"%>
<html>
<head><title>ServletException异常处理页面</title></head>
<body>
<H1>网页发生错误:</H1><%=exception%>
<H2>显示异常堆栈追踪:</H2>
<%
exception.printStackTrace(response.getWriter());
%>
</body>
</html>
通常处理异常的网页是动态网页,您可以设计一个通用的动态网页,让相关错误讯息、异常处理都由它来处理,以产生一致的外观,例如在web.xml中这么写:
代码:
<error-page>
<error-code>404</error-code>
<location>/errorhandler.jsp</location>
</error-page>
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/errorhandler.jsp</location>
</error-page>
您可以使用下面的网页来取得相关讯息,并进一步修改为通用的错误处理网页:
代码:
<%@page contentType="text/html;charset=Big5" isErrorPage="true"%>
<html>
<head><title>错误与异常处理页面</title></head>
<body>
错误码: <%=request.getAttribute("javax.servlet.error.status_code")%> <br>
讯息: <%=request.getAttribute("javax.servlet.error.message")%> <br>
异常: <%=request.getAttribute("javax.servlet.error.exception_type")%> <br>
</body>
</html>
request的getAttribute()可以取得储存在其中的相关属性,依status_code、message、与exception_type,您可以进一步进行不同的错误、异常处理。
下一篇:JSF(JavaServer Faces) 介绍 >>
相关文章:
- · 关于seeion的文章
- · Servlet、Jsp性能优化
- · J2EE平台WEB组件开发中如何使用定制标签
- · Web开发学习笔记
- · 用servlet显示图片
- · Servlet设计
- · 如何用jsp输出存在于oracle数据库Blob字段中的…
- · 关于JAVA的分页查询操作技术
- · 使用XML封装数据库操作语句的实现(完全版)-…
- · FC3 安装升级手记
- · 网上看到比较方便的vsftpd讲解
- · 子网掩码计算方法
- · 关于pasv模式中,数据端口由谁指定?
- · Vsftpd1.2.0的高级配置篇
- · Vsftpd1.2.0的基础配置篇
- · SERV-U 6002版安全设置全攻略(3)
- · SERV-U 6002版安全设置全攻略(2)
- · SERV-U 6002版安全设置全攻略(1)
- · SERV-U 6002版安全设置全攻略(4)
- · FTP的建立与维护
- · 用SSL加密增强FTP服务器安全性
- · 教你如何巧妙设定匿名FTP的安全
- · 创建IIS6.0下用户隔离模式FTP站点
- · Secure FTP:安全的企业级FTP服务器
- · BulletProof FTP Server:物美价廉
- · ArGoSoft FTP服务器:架设只要一分钟
- · FTP服务器架设--管理篇
- · FTP服务器架设--架设篇
- · FTP服务器架设--安全篇
- · serv-U FTP软件的攻击防守
- · FTP服务器快速架设全功略
- · IIS建立FTP就真的那么弱吗
- · 关于ftp服务程序中不安全因素研究
- · FTP服务器安全
- · FTP服务器端软件Serv-U教程(6)
- · FTP服务器端软件Serv-U教程(2)
- · FTP服务器端软件Serv-U教程(5)
- · FTP服务器端软件Serv-U教程(3)
