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

JSP
搭建Eclipse+MyEclipse开发环境
卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
一个jsp+AJAX评论系统
JSP 多个文件打包下载代码
JSP 动态树的实现
jsp 重复提交问题
J2ME/J2EE实现用户登录交互 实现代码
访问JSP文件或者Servlet文件时提示下载的解决方法
JSP EL表达式详细介绍
JSP 报表打印的一种简单解决方案
jsp 自定义标签实例
AJAX自学练习 无刷新从数据库后台取数据显示
AJAX 自学练习 请求与显示
AJAX 自学练习 无刷新提交并修改数据库数据并显示
jsp 文件上传浏览,支持ie6,ie7,ie8
JSP application(return String)用法详例
jsp form表单方法示例
JSP request(return String)用法详例
JSP forward用法分析实例代码分析
JSP JavaBean的setProperty属性

JSP 中的 exception 隐含对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 87 ::
收藏到网摘: 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,您可以进一步进行不同的错误、异常处理。