当前位置: 首页 > 图文教程 > 网络编程 > JSP > exception 隐含对象

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

JSP 中的 exception 隐含对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 108 ::
收藏到网摘: n/a

    exception 隐含对象在转换为Servlet之后,会对应至java.lang.Throwable型态的对象,也就是异常处理相关对象,只要您对Java例外处理有认识,就应当知道如何使用exception的各种方法,这边则由exception为招牌,实际上介绍如何在web.xml中规划错误处理网页,以及在发生对应的异常发生时呼叫对应的异常处理网页。 
    服务器发现错误时,会有自己的一套错误讯息网页以供响应,例如在发生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,您可以进一步进行不同的错误、异常处理。