<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評論-49  文章-56  trackbacks-0

    一 配置異常(在struts-config.xml文件中定義),定制異常有兩種:
    1 全局異常(Global Exceptions)
    <global-exceptions>
     <exception key="invalideUser"
     path="/Login.jsp" type="com.future.struts.MyException" />
    </global-exceptions>
    2 局部異常(Local Exception)
    <action-mappings>
      <action attribute="loginForm" name="loginForm"
       path="/loginAction(出錯轉向的路徑)" scope="request"
       input="/login.jsp"http://異常轉向的頁面,同exception中的path,優先級path高于input
      />
      <exception key="invalideUser(異常信息的key)" path="/Error.jsp"
      type="cn.itcast.ItcastException(異常類全名)" />
    </action-mappings>
     path:出現異常后跳轉的頁面
     key:異常信息的鍵,對應的值在資源文件當中
     type:所要處理的異常類
    二 在相應的action中的execute方法中拋出異常
    三 在異常處理頁面(path所指的頁面)使用html:errors標簽打印異常信息
    1 建立資源文件ApplicationResources.properties
    內容:invaliduser=it is an invalid user(key/value)
    2 配置struts-config.xml文件
      <message-resources parameter="cn.itcast.ApplicationResources" key="invalideuser"/>
    3 使用html:errors標記打印信息
      <html:errors />
      --------------------------------------------
    1 編程式異常
      * 截獲異常
      * 創建相應的異常消息
      * 傳遞異常消息
      * 轉向相應的頁面處理異常
    2 聲明式異常(自動處理的異常)
      * 在struts-config.xml文件中配置<exeception/>標簽
      * 理解局部和全局exception
      * 注意局部<exception/>標簽需要配置到<forward/>標簽的前面
     
      <exeception/>標簽中的屬性說明:
          * key:指異常信息對應的國際化消息文本,這個key值需要在國際化資源文件中定義
          * type:處理那種異常
          * path:定義一但出現異常,需要轉向那個頁面,如果不定義path,
                 默認情況下將使用<action>標簽中input屬性對應的頁面
          * scope:可以取值request和session,默認為request
          * handler:導常的處理類,struts默認采用org.apache.struts.action.ExceptionHandler,
                    如果做個性化的異常處理可以繼承此類復寫相應的方法
    -------------------------------------------------------------------------
    個性異常類定義
    一 方法:
    1 定義MessageResources.propertices資源文件
    2 在struts-config中配置<exception/>
      <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"
       handler="com.bjsxt.struts.ErrorCodeException" />
    3 編寫異常類ErrorCodeException繼承RuntimeException
    public class ErrorCodeException extends RuntimeException {
     private String errorCode;//這是key對應的值
     private Object[] args;//這是參數集合
     public ErrorCodeException(String errorCode){
      this(errorCode,null);
     }
     public ErrorCodeException(String errorCode,Object args0){
      this(errorCode,new Object[]{args0});
     }
     public ErrorCodeException(String errorCode,Object[] args){
      this.errorCode=errorCode;
      this.args=args;
     }
     public String getErrorCode() {
      return errorCode;
     }
     public Object[] getArgs() {
      return args;
     }
    }
    4 編寫ErrorCodeExceptionHandler類繼承ExceptionHandler,
      復寫public ActionForward execute(Exception ex, ExceptionConfig ae,
             ActionMapping mapping, ActionForm formInstance,
             HttpServletRequest request, HttpServletResponse response)
             throws ServletException{}方法:
    public ActionForward execute(Exception ex, ExceptionConfig ae,
             ActionMapping mapping, ActionForm formInstance,
             HttpServletRequest request, HttpServletResponse response)
             throws ServletException {
             //添加判斷
           ------------------------------------------------------------
          if(!(ex instanceof ErrorCodeException)){
           return super.execute(ex, ae, mapping, formInstance, request, response);
          }
          ------------------------------------------------------------
             ActionForward forward;
             ActionMessage error;
             String property;

             // Build the forward from the exception mapping if it exists
             // or from the form input
             if (ae.getPath() != null) {
                 forward = new ActionForward(ae.getPath());
             } else {
                 forward = mapping.getInputForward();
             }

             // Figure out the error
             if (ex instanceof ModuleException) {
                 error = ((ModuleException) ex).getActionMessage();
                 property = ((ModuleException) ex).getProperty();
             } else {
              //改修這個地方
              //----------------------------------------------
              ErrorCodeException ece=(ErrorCodeException)ex;
              String errorCode=ece.getErrorCode();
              Object[] args=ece.getArgs();
              error = new ActionMessage(errorCode, args);
              property = error.getKey();
              //------------------------------------------------
                 //error = new ActionMessage(ae.getKey(), ex.getMessage());
                 //property = error.getKey();
             }

             this.logException(ex);

             // Store the exception
             request.setAttribute(Globals.EXCEPTION_KEY, ex);
             this.storeException(request, property, error, forward, ae.getScope());

             if (!response.isCommitted()) {
                 return forward;
             }
             return null;
         }
    }
    5 頁面直接拋出異常
    public void login(String username,String password){
      if(!"admin".equals(username)){
        throw new ErrorCodeException("user.not.found",username,age);
      }
    }
    ---------------------------------------------------------------------
    二 方法:
    1 定義MessageResources.propertices資源文件
      內容:error.exception={0}
    2 在struts-config中配置<exception/>
      <exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"/>
    3 編寫異常類ErrorCodeException繼承RuntimeException
    public class ErrorCodeException extends RuntimeException {
      public ErrorCodeException(String msg){
        super(msg);
      }
    }
    4 頁面直接拋出異常
    public void login(String username,String password){
      if(!"admin".equals(username)){
        throw new ErrorCodeException("名稱"+usrname+"錯誤!");
      }
    }


    --------------------------------------------------------------------------
    1 ApplicationResources.properties文件
       num2Meg=is not a double
    2 struts-config.xml
       <message-resources parameter="ApplicationResources" />
    3 ActionMessages errs=new ActionMessages();
    errs.add("num1Error",new ActionMessage("num2Meg"));
    //errs.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("num2Meg"));


    this.saveErrors(request,errs);

    頁面
    <html:errors property="num1Error"/>
    //<html:errors/>//全局不能指定property
    errs.header="<script>alert("
    errs.footer=")</script>"

    posted on 2009-11-30 08:11 junly 閱讀(495) 評論(0)  編輯  收藏 所屬分類: struts2/struts1.3/JSF
    主站蜘蛛池模板: 亚洲国产一二三精品无码| 无码国产精品一区二区免费式直播 | 无码永久免费AV网站| 亚洲AV成人精品网站在线播放| 国产99精品一区二区三区免费| 亚洲福利在线播放| 特级毛片全部免费播放a一级| 日韩在线免费电影| 国产精品观看在线亚洲人成网| 日本人的色道www免费一区| 自拍偷自拍亚洲精品偷一| 免费人成视频x8x8入口| 一级黄色免费网站| 亚洲精品国产精品乱码视色| 日韩精品免费在线视频| 亚洲邪恶天堂影院在线观看| **俄罗斯毛片免费| 亚洲综合色丁香婷婷六月图片| 国产免费看JIZZ视频| 在线视频亚洲一区| 亚洲欧洲无码AV电影在线观看 | 巨胸喷奶水www永久免费| 亚洲va国产va天堂va久久| 精品免费人成视频app| 亚洲熟妇无码一区二区三区| 免费又黄又爽的视频| 成全动漫视频在线观看免费高清版下载| 亚洲A∨无码一区二区三区| 真人做人试看60分钟免费视频| 亚洲乱亚洲乱妇无码| 伊人久久综在合线亚洲91| 久久久久久免费一区二区三区 | 99re热免费精品视频观看| 黄网站色视频免费观看45分钟| 久久91亚洲精品中文字幕| 美丽的姑娘免费观看在线播放| 亚洲精品无码你懂的| 全亚洲最新黄色特级网站 | 亚洲AV无码乱码国产麻豆 | 亚洲人成图片网站| 国产精品极品美女免费观看|