新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 计算机科学论坛计算机技术与应用『 Java/Eclipse 』 → 可以自动跳转到出错页面的servlet/jsp框架 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9349 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 可以自动跳转到出错页面的servlet/jsp框架 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     npuhetao 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:骨灰级菜鸟
      等级:大二(研究C++)
      文章:230
      积分:2708
      门派:XML.ORG.CN
      注册:2004/3/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给npuhetao发送一个短消息 把npuhetao加入好友 查看npuhetao的个人资料 搜索npuhetao在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看npuhetao的博客楼主
    发贴心情 可以自动跳转到出错页面的servlet/jsp框架

    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") %>


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    你硬要把单纯的事情看得很严重,那样子你会很痛苦。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/24 19:47:00
     
     jcxuefeng 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(数据结构考了98分!)
      文章:79
      积分:378
      门派:XML.ORG.CN
      注册:2005/9/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jcxuefeng发送一个短消息 把jcxuefeng加入好友 查看jcxuefeng的个人资料 搜索jcxuefeng在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jcxuefeng的博客2
    发贴心情 
    好方法!我喜欢!

    ----------------------------------------------
    学会对别人说NO~

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/19 10:55:00
     
     lywzd 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:69
      积分:324
      门派:XML.ORG.CN
      注册:2005/10/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lywzd发送一个短消息 把lywzd加入好友 查看lywzd的个人资料 搜索lywzd在『 Java/Eclipse 』的所有贴子 点击这里发送电邮给lywzd 引用回复这个贴子 回复这个贴子 查看lywzd的博客3
    发贴心情 
    STRUCTS框架也提供了类似的功能,没必要自己编写了.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/1 11:09:00
     
     lywzd 帅哥哟,离线,有人找我吗?
      
      
      等级:大二期末(C++考了100分!)
      文章:69
      积分:324
      门派:XML.ORG.CN
      注册:2005/10/31

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lywzd发送一个短消息 把lywzd加入好友 查看lywzd的个人资料 搜索lywzd在『 Java/Eclipse 』的所有贴子 点击这里发送电邮给lywzd 引用回复这个贴子 回复这个贴子 查看lywzd的博客4
    发贴心情 
    对不起,写错了,是STRUTS !!!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/1 11:15:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/23 3:18:11

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    56.641ms