欢迎来到HELLO素材网! 南京网站制作选择顺炫科技
丰富的DIV CSS模版、JS,jQuery特效免费提供下载
当前位置:主页 > 建站教程 > 网站制作教程 >

可能主动跳转到出错页面的servlet/jsp框架

发表于2019-04-24 21:20| 次阅读| 来源网络整理| 作者session

摘要:可能主动跳转到出错页面的servlet/jsp框架

可能主动跳转到出错页面的servlet/jsp框架

  jsp有一个指令可能定义jsp的谬误页面,并在此jsp页面出错时跳转到该页面输出出错
  
  日志。如下的例子:
  
  <%@pageerrorPage="errorPage.jsp"%>
  
  errorPage.jsp的代码如下所示:
  
  .....
  
  <%@pageisErrorPage="true"%>
  
  ....
  
  //输出出错日志
  
  <%=exception.getMessage()%>
  
  然而,这只能在jsp页面层控制。在J2EE的完成中,很多的情况是jsp往往只作为页面显
  
  示,与业务相干的数据库操作都是在后台的servlet执行,解决终了之后再跳转某个jsp显示
  
  页面。这种设置框架,完成了MVC构造,使得整个系统的维护难度大大升高。
  
  实践的工作中,虽然系统采用了以上的设置框架,但由J2EE开发人员程度以及编程的习
  
  惯都有能够不通,常常会遇到开发人员在servlet中对有能够报错的中央解决不失当。最常
  
  见的一种情况是,catch一个Exceptione,然后仅仅调用e.printStackTrace()。这样形成
  
  的结果十分重大。一旦有Exception发生,web页面会出现白屏,咱们可能从两方面来看:
  
  (1)假设是利用的用户。他往往会手足无措,并且有能够还不知道有谬误发生,持续利用
  
  系统,但这时分的系统已经出错了,在谬误的根底上持续业务流程,往往会形成更多系统级
  
  别的谬误。
  
  (2)假设是开发人员。用户反映了这个出错,然而不知道出错缘由。只能说出现要白屏。
  
  开发人员需求调试抓错的话,非失去运用服务器的输入端查看出错日志,定位能够出错的原
  
  因,再停止排错。
  
  在此,我引见一种有效的servlet出错解决机制,这种机制将一切Exception的出错内容
  
  抛出到web页面,让利用用户立即有谬误发生,并可能及时将该出错内容提交给开发人员定
  
  位出错缘由。
  
  其实,这种机制十分简略。思绪是定义一个形象的BaseServlet基类,它承继HttpServlet。
  
  并添加一个形象的
  
  abstractpublicvoiddoWorkFlow(HttpServletRequestrequest,HttpServletResponseresponse)
  
  的方法,这个方法是一切BaseServlet子类都必须且仅需完成的方法。BaseServlet基类当然要完成service方法--
  
  publicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
  
  。它的代码片断如下:
  
  publicfinalvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
  
  throwsServletException,IOException{
  
  try{
  
  //在执行doWorkFlow()之前,你可能在此解决能否有权限解决等成绩
  
  .......
  
  doWorkFlow();
  
  }catch(Exceptione){
  
  StringWriterout=newStringWriter();
  
  e.printStackTrace(newPrintWriter(out));
  
  request.setAttribute("err_msg",out.toString());
  
  RequestDispatcherrd=this.getServletContext().getRequestDispatcher("errorServlet.jsp");
  
  rd.forward(request,response);
  
  }
  
  }
  
  errorServlet.jsp十分简略。代码片断如下:
  
  ....
  
  //输出出错日志
  
  <%=request.getAttribute("err_msg")%>