Struts中的異常處理

          Posted on 2008-01-08 21:31 Norvid 閱讀(229) 評論(0)  編輯  收藏
          本來打算這個blog寫些關于腳本編程的內容,可是最近一直在搞java的開發(fā),而且總被一些平時沒注意的問題“騷擾”。好吧,我承認,是我基礎不扎實……

          比如說這個Struts的異常處理,雖然我是知道能根據(jù)異常類的類型來導向相應的頁面的,可是這樣很不好。于是我根據(jù)過往的各種經(jīng)驗將Struts的使用總結為以下形式。

              // execute純粹作為轉發(fā)器與異常捕捉與處理
             
          public ActionForward execute(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response) {
                  
          try {
                      String method 
          = request.getParameter("method");
                      
          if (StringUtils.isEmpty(method) || method.equalsIgnoreCase("query")) {
                          
          return query(mapping, form, request, response);
                      } 
          else if (method.equalsIgnoreCase("list")) {
                          
          return list(mapping, form, request, response);
                      } 
          else if (method.equalsIgnoreCase("info")) {
                          
          return info(mapping, form, request, response);
                      } 
          else {
                          
          return query(mapping, form, request, response);
                      }
                  } 
          catch (Exception error) {
                      
          return error(mapping, form, request, response, error);
                  }
              }


              
          /**
               * 異常捕獲
               
          */
              
          private ActionForward error(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response,
                      Exception error) {
                  logger.error(
          "error: " + error.getMessage());
                  request.setAttribute(
          "msg", error.getMessage());
                  request.setAttribute(
          "error", error);
                  
          return mapping.findForward("error");
              }


              
          /**
               * 全部查詢
               
          */
              
          private ActionForward list(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response)
                      
          throws Exception {
                  
                  
                 
                  
          return mapping.findForward("query");
              }

              

          如上面的代碼所示,action的默認入口只是作為一個轉發(fā)器以及異常捕獲點進行相關的異常處理(見error函數(shù))。真正的處理改為由各個功能函數(shù)來處理(如list函數(shù))。呵呵,是不是很像DispatchAction類?就是從它想出來的。如果直接使用DispatchAction類的話,每個方法都要自己寫異常處理,太繁瑣了。弄個轉發(fā)器只需寫一次就行了。

          呀,有點跑題了。其實我也就想說其實可以使用web.xml的配置來根據(jù)不同的http異常來導向不同的頁面……雖然如果注意的話,異常都會在struts的Action層就能完全捕獲住了(屬于開發(fā)階段中的JSP錯誤除外)。

          web.xml中配置HTTP異常的方法為:

          <!-- 根據(jù)錯誤碼進行跳轉-->
          <error-page>
              
          <error-code>500</error-code>
              
          <location>/error.jsp</location>
          </error-page>



          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          posts - 0, comments - 9, trackbacks - 0, articles - 13

          Copyright © Norvid

          主站蜘蛛池模板: 墨脱县| 甘谷县| 湖口县| 江门市| 武宁县| 尼玛县| 蒙城县| 花垣县| 乌苏市| 承德县| 海门市| 乾安县| 佳木斯市| 灌阳县| 开平市| 泸州市| 徐闻县| 梧州市| 南通市| 左云县| 三都| 屏东县| 临桂县| 广宗县| 砚山县| 芦溪县| 新龙县| 东平县| 酒泉市| 长乐市| 聂荣县| 时尚| 句容市| 海南省| 琼结县| 石河子市| 靖江市| 池州市| 天门市| 韩城市| 定兴县|