书签 分享 收藏 举报 版权申诉 / 17

类型跟我学《Web组件与框架开发技术》深入掌握J2EE JSP Web应用系统中的异常处理技术及应用示例.docx

  • 文档编号:7254042
  • 上传时间:2023-05-11
  • 格式:DOCX
  • 页数:17
  • 大小:851.90KB

然后在客户关系信息系统项目中的各个功能页面中利用page指令设置错误页面文件为showSystemError.jsp,如下示例图为项目中的responseUserLogin.jsp页面示图。

示例代码如下:

<%@pageerrorPage="/errorDeal/showSystemError.jsp"%>

在某个功能页面(如上示例图所示的responseUserLogin.jsp页面)中添加如图所示的语句,该语句被零除而故意产生出异常错误。

再执行客户关系信息系统项目中的用户登录功能页面,将出现如下示例图所示的错误状态和抛出异常错误信息。

注意在上面的示例图中的浏览器URL地址栏中的目标JSP文件仍然为responseUserLogin.jsp页面,但所显示的错误信息却是由showSystemError.jsp页面输出的信息,表明Servlet容器实现此功能时是采用请求转发形式实现的。

另外,由于在上面示例代码中实现了在浏览器窗口中打印输出详细的异常跟踪信息的功能。

因此,在上面的示例图中能够看到具体出现错误的语句行号,为错误定位和排除提供了参考信息。

1.1.2J2EEJSPWeb应用系统中的异常处理技术及应用

1、Web应用中异常处理的基本原则

软件应用系统在运行过程中出现各种形式的错误是不避免的,在Java语言中提供有功能强大的异常处理的支持。

并且分别针对系统级异常(与应用系统中的业务逻辑无关的系统平台程序所产生的错误)和应用级异常(由于用户违背了商业业务逻辑而导致的异常错误,这种错误一般不是致命的错误)都提供有对应的技术支持。

在Web应用系统开发实现过程中,也应该要正确地处理系统中的各种异常。

一般应该要遵守如下的基本原则。

首先,要注意不要让用户看到原始的Java异常信息,而应该要将原始的系统抛出的异常信息转换或者翻译为中文。

因为,原始的Java异常信息一般都是英文描述,而且其中也会出现大量的专业术语。

应用系统的普通用户并不能准确地理解这些错误信息的真正含义,如下图所示的为Http404类型错误信息所示。

而如下图所示的为Http505类型错误信息所示。

其次,可以将原始的Java异常信息记录到日志文件中有助于以后系统在维护和功能扩展时的错误定位。

尽管原始的Java异常信息对于普通的用户来说没有什么实际的意义,但对于应用系统的开发者来者却有用,开发人员可以借助这些专业的信息理解错误所在和了解出现错误的主要原因。

在如下所示的示例中应用Java语言中的日志API记录系统中的原始异常信息,并将原始的异常信息再翻译和转换为更容易理解的信息向上层的调用程序返送。

如下为利用日志技术保存原始的Java异常信息的代码示例:

packagecom.bluedream.webcrm.dao.imple;

importcom.bluedream.webcrm.exception.WebCRMException;

importjava.util.logging.Level;

importjava.util.logging.Logger;

publicclassMySQLConnectDBBeanimplementsConnectDBInterface{

StringJDBC_DBDriver_ClassName="com.mysql.jdbc.Driver";

privateLoggerlogger=Logger.getLogger(this.getClass().getName());

publicMySQLConnectDBBean()throwsWebCRMException{

try{

Class.forName(JDBC_DBDriver_ClassName);

}catch(ClassNotFoundExceptione){

logger.log(Level.INFO,e.getMessage());

thrownewWebCRMException("不能正确地加载JDBC驱动程序");

}

}

//其他的功能代码在此省略

}

最后,在控制层或者表现层的组件中捕获用户自定义的异常,并转发到错误信息显示页面中显示错误信息,如下示例图所示为执行的结果。

2、Web应用系统中的错误信息显示的基本要求

(1)不能应用System.out.println()方法输出错误信息

在JSP页面中的错误信息的处理方法类同于Java程序中的异常错误信息的处理方法,只是应该将输出的错误信息发送到浏览器窗口中显示输出,如前面示例中的示例所示;而不是发送到服务器主机的系统控制台中,也就是不应该再使用System.out.println()方法输出错误信息。

如下示例为应用System.out.println()方法输出错误信息,但只能在运行环境的系统控制台中显示,而不能将错误信息发送到客户端所能够预览的信息窗口中。

因此,不利于应用系统的使用者及时了解所出现的错误信息:

如下的程序代码示例为将输出的错误信息发送到浏览器窗口中显示输出的相关的程序示例:

<%@pagecontentType="text/html;charset=GB2312"%>

<%@pagelanguage="java"%>

<%@pageimport="java.io.*"%>

错误检测

错误检测




<%

inta=10,b=0,c;

try{

c=a/b;//在这里人为的方式产生除以零的错误

}

catch(Exceptione){

out.println(e.toString());

}

finally{

out.println("
这里产生了除以零的错误");

}

%>

如下的示例图为程序代码示例执行的结果局部截图:

(2)在分层系统实现中,下层系统向上层系统报告异常错误时,通常采用抛出自定义异常的方式实现

(3)设计自定义的异常以统一系统中不同的异常类型

为什么要抛出自定义的异常?

有利于下层的代码移植,如将DAO中的JDBC异常改变为基于Hibernate框架的异常。

(4)设计自定义异常时,一般都让自定义的异常直接继承RuntimeException,从而使得上层的系统代码不必进行与异常相关的try...catch处理,也就是使得上层程序代码不必依赖于下层的程序代码实现。

(5)在控制层组件中捕获用户自定义的异常

(6)在表示层组件中处理未捕获的异常类型

而如下示例图为显示异常信息的页面showSystemError.jsp文件所在的目录路径及定位示例截图:

而在显示异常信息的页面showSystemError.jsp文件中通过使用exception对象捕获所抛出的异常信息,然后在目标页面中显示输出。

但需要在showSystemError.jsp页面中添加<%@pageisErrorPage="true"%>。

如果除掉<%@pageisErrorPage="true"%>,此时该页面为正常的页面——不再为错误处理页面:

3、在J2EEJSPWeb应用系统中异常处理的方式

(1)采用编程方式在程序中直接进行异常处理

对于系统在运行过程中所可能抛出的异常,可以在程序中直接应用try/catch语句块捕获异常;然后定制出个性化的比较详细的错误信息,并保存到request请求对象中。

最后在特定的页面中把错误信息反馈给用户并在错误信息显示页中显示输出。

采用编程方式在程序中直接进行异常处理,可以达到“灵活”的目的,对于异常的处理,主要是采用try/catch语句捕获异常,然后再定制出个性化的比较详细的错误信息。

(2)以配置的方式处理异常

在J2EEWeb技术规范中定义了可配置形式的异常错误显示的支持,不同的应用服务器都对此规范提供了技术实现的支持。

而且可以指定错误编码或者异常的具体类型,但可配置的异常处理方式一般只应用于特定类型的异常错误处理。

4、以配置的方式进行J2EEJSPWeb应用系统中异常处理的示例

在客户关系信息系统项目站点根目录下的errorDeal子目录内再添加一个显示指定错误编码形式的错误信息的JSP页面文件showIECodeError.jsp,该页面的内容如下程序代码示例所示。

在该示例页面中设计了一个表格,在其中显示指定的错误信息(黑体所标识的标签)。

如下为showIECodeError.jsp页面文件中的代码示例:

<%@pagepageEncoding="GB18030"%>

显示指定错误编码形式的错误信息的JSP页面文件

 

您的系统出现了404或者500等类型的错误!


在系统的部署描述文件web.xml中进行配置定义,针对每个错误类型添加一个标签,如下程序代码示例中的各个标签所示。

在该示例中,分别针对Http状态码404、500和505所代表的错误以配置的方式进行异常处理,并指明显示异常错误信息的JSP页面(本示例为showIECodeError.jsp文件)。

如下为在部署描述文件web.xml中以配置的方式进行异常处理的示例:

404

/errorDeal/showIECodeError.jsp

500

/errorDeal/showIECodeError.jsp

505

/errorDeal/showIECodeError.jsp

在web.xml文件中,不仅可以指定Http状态码所对应的错误信息,而且也可以针对指定异常类型配置出错误信息显示的JSP页面中。

在如下的程序代码示例标签中,为ArithmeticException算术异常和NullPointerException空指针异常指定错误信息页面。

如下为针对指定异常类型配置出错误信息显示的JSP页面示例代码:

java.lang.ArithmeticException

/errorDeal/showSystemError.jsp

java.lang.NullPointerException

/errorDeal/showSystemError.jsp

MyEclipse工具也提供有对web.xml文件可视化编辑修改的支持,如下示例图所示。

然后再测试以配置的方式进行异常处理的效果,如下示例图中的代码示例为人为地产生出异常错误:

针对如上面所示的产生错误的程序代码示例结果在执行后,未在web.xml文件中加以配置定义之前,会出现如下示例图所示的Http状态码500的错误。

而添加前面的标签之后,不再出现上面的错误页面,而是显示指定的错误信息的显示页面:

而添加下面的异常类型定义后的结果页面:

java.lang.NullPointerException

/errorInfo/showRuntimeExceptionInfo.jsp

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
Web组件与框架开发技术 跟我学Web组件与框架开发技术深入掌握J2EE JSP Web应用系统中的异常处理技术及
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:跟我学《Web组件与框架开发技术》深入掌握J2EE JSP Web应用系统中的异常处理技术及应用示例.docx
链接地址:https://www.bingdoc.com/p-7254042.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开