可以自动跳转到出错页面的servlet/jsp框架

js|servlet|页面|自动跳转

jsp有一个指令可以定义jsp的错误页面,并在此jsp页面出错时跳转到该页面输出出错
日志。如下的例子:
<%@ 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") %>

时间: 2024-08-04 13:36:38

可以自动跳转到出错页面的servlet/jsp框架的相关文章

wap浏览自动跳转到wap页面的js代码_javascript技巧

如何让用户输入wap手机网站的网址时自动跳转到wap网站 ?wap页面自动跳转的实现方式 ?如何判断访客是否是移动设备访问,自动跳转到wap页面 ?手机自动跳转到手机页面,一个网址区分普通访问与手机访问 ?手机访问网站域名时如果实现自动跳转到wap页面 ? 本文就可以解决这些问题! 复制代码 代码如下: function is_mobile() {     var regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|

等待指定时间后自动跳转或关闭当前页面的js代码

本文为大家详细介绍下如何通过js实现等待指定时间后自动跳转或关闭当前页面的脚步代码,感兴趣的朋友可以参考下哈,希望对大家有所帮助   复制代码 代码如下: //指定时间之后跳转 <script language="javascript"> function go( ) {//定义函数 window.location="main.html";//页面跳转 } window.setTimeout("go()",1000);//1秒后执行函

当Session失效后自动跳转到登录页(不改动页面代码的条件下)

问题描述 我想实现的是这样:当Sesssion失效后,如果用户再操作,自动跳转到登录页面!条件:不改动页面代码.因为我的页面太多了,一个一个改太麻烦了! 解决方案 解决方案二:web.config<customErrorsmode="On"defaultRedirect="Login.aspx"></customErrors>解决方案三:哦,我试试!就这么简单?解决方案四:好用吗?告诉我一声呗,也学学.解决方案五:错误的,<custom

导航栏菜单跳到另外一个页面的IFRAME中怎么做

问题描述 这是一个关于页面跳转的问题在用JSP做网页时,每个页面都有一个头部子页面,其中包含一个下拉菜单,我在主页点击下拉菜单的收件箱时想跳到个人管理中心的收件箱里,这个收件箱也是一个子页面,数据是从Servlet中传过来的,个人管理中心里有一个IFRAME,也就是说怎么实现一个IFRAME中动态显示从Servlet中传来的页面?高手们指点下,谢谢想用JSTL和EL表达式来接受servlet中传过来的变量来实现没有成功 解决方案 解决方案二:frame.src="servlet地址";

等待指定时间后自动跳转或关闭当前页面的js代码_javascript技巧

复制代码 代码如下: //指定时间之后跳转 <script language="javascript"> function go( ) {//定义函数 window.location="main.html";//页面跳转 } window.setTimeout("go()",1000);//1秒后执行函数go </script> //指定时间之后自动关闭 <script type="text/javascr

自动刷新页面的asp.net实现的6种方法

自动刷新页面的asp教程.net实现的6种方法 第一: private void Button1_Click( object sender, System.EventArgs e )   {      Response.Redirect( Request.Url.ToString( ) ); } 第二: private void Button2_Click( object sender, System.EventArgs e )   {      Response.Write( "      &

JSP建立错误页页面并自动跳转_JSP编程

在各个常用的web站点中,经常会发现这样一个功能:当一个页面出错后,会自动跳转到一个页面上进行错误信息的提示. 想要完成错误页的操作,则一定要满足两个条件: 1.指定错误出现时的跳转页,通过errorPage属性指定: 2.错误处理页必须有明确的标识,通过isErrorPage属性指定. 下面就是错误页:errorPage.jsp 代码如下: <%@ page language="java" import="java.util.*" pageEncoding=

优酷网再次发生网络故障,自动跳转至错误提示页

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 凌晨3点,优酷视频就出现卡的状况,今天早晨国内知名的视频分享网站优酷网再次无法正常访问,官方网站称网站发生网络故障,目前官网自动跳转至错误提示页. 官方错误页:http://www.youku.com/youku/youku.html 优酷网称遭遇临时故障 有站长表示,对于优酷这样的大型网站来说,临时故障的可能性微乎其微. 截至目前为止,优酷

frame-关于A页面的form提交跳转时请求B服务器的资源的问题求助!

问题描述 关于A页面的form提交跳转时请求B服务器的资源的问题求助! 一个域名映射多台服务器A (192.168.2.110) B (192.168.2.111).用户登录时请求的A服务器的 /logon .登录成功后要跳转到B服务器上的index.jsp上.但是地址栏要一直显示是域名. 解决方案 要想做到这一点就不能跳转,只能在logon的服务器端程序中使用webclient一类的库去下载index.jsp到服务器A,再传回客户端.相当于反向http代理.