|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。js|servlet|页面|主动跳转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")%>
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|