<%@ page contentType="text/html; charset=gb2312"%> 可以自动跳转到出错页面的servlet/jsp框架
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
可以自动跳转到出错页面的servlet/jsp框架
     发布者: 发布时间:2006-05-07

日志。如下的例子:
<%@ page errorPage="errorPage.jsp" %>
errorPage.jsp的代码如下所示:
.....
<%@ page isErrorPage="true" %>
....
//输出出错日志
<%= exception.getMessage() %>

但是,这只能在jsp页面层控制。在J2EE的实现中,很多的情况是jsp往往只作为页面显
示,与业务相关的数据库操作都是在后台的servlet执行,处理完毕之后再跳转某个jsp显示
页面。这种设置框架,实现了MVC结构,使得整个系统的维护难度大大降低。

实际的工作中,尽管系统采用了以上的设置框架,但由J2EE开发人员水平以及编程的习
惯都有可能不通,经常会遇到开发人员在servlet中对有可能报错的地方处理不恰当。最常
见的一种情况是,catch一个Exception e,然后仅仅调用e.printStackTrace()。这样造成
的后果非常严重。一旦有Exception发生,web页面会出现白屏,我们可以从两方面来看:
(1)如果是使用的用户。他往往会不知所措,并且有可能还不知道有错误发生,继续使用
系统,但这时候的系统已经出错了,在错误的基础上继续业务流程,往往会造成更多系统级
别的错误。
(2)如果是开发人员。用户反映了这个出错,但是不知道出错原因。只能说出现要白屏。
开发人员需要调试抓错的话,非得到应用服务器的输入端查看出错日志,定位可能出错的原
因,再进行排错。

在此,我介绍一种有效的servlet出错处理机制,这种机制将所有Exception的出错内容
抛出到web页面,让使用用户立即有错误发生,并可以及时将该出错内容提交给开发人员定
位出错原因。
其实,这种机制非常简单。思路是定义一个抽象的BaseServlet基类,它继承HttpServlet。
并增加一个抽象的 abstract public void doWorkFlow(HttpServletRequest request,HttpServletResponse response)
的方法,这个方法是所有BaseServlet子类都必须且仅需实现的方法。BaseServlet基类当然要实现service方法 -- public final void service(HttpServletRequest request,HttpServletResponse response)
。它的代码片断如下:
public final void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
try{
//在执行doWorkFlow()之前,你可以在此处理是否有权限处理等问题
.......
doWorkFlow();
}catch(Exception e){
StringWriter out = new StringWriter();
e.printStackTrace(new PrintWriter(out));
request.setAttribute("err_msg", out.toString());
RequestDispatcher rd = this.getServletContext().getRequestDispatcher("errorServlet.jsp");
rd.forward(request,response);
}
}

errorServlet.jsp非常简单。代码片断如下:
....
//输出出错日志
<%= request.getAttribute("err_msg") %>
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
JSP调用Java Bean在网页上动态生成柱状图
彻底搞定JSP在线人数
用Struts实现模板
一个log4j的学习笔计
简单的sql语句生成器
给大家一个ldap例子
 
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号