麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Struts異常機制(Exception Handling)

2019-11-18 12:54:31
字體:
來源:轉載
供稿:網友

  總的來說,在struts新的版本中加入了對異常的處理,稱之為:Exception Handling,標志著作為一個整體的解決框架,struts原來越趨于成熟。
  
  通常來說,以前在用struts開發的過程中,對于異常的處理,主要是采用手動處理的方式:如通過try/catch等等捕捉異常,然后定制個性化的比較具體的錯誤信息放進ActionError中,然后在具體的返回頁面中把這些錯誤信息反饋給用戶(包括開發員)。異常原始的信息不管是最終用戶還是開發員都是不希望看到的。
  
  下面著重講一下在struts中是如何通過配置文件來解決異常。
  
  Struts中的Exception Handleing不難,簡單高效是業內給其的一個比較好的評價。
  
  通過配置文件(主要是struts-config.xml)來定制異常處理,就象定義formbean一樣,定制異常也有兩種方法,姑且把它分為:“全局異常”和“局部異常”。
  
  全局異常,定義方法如下:
  
  ……
  
  ……
  
  <global-exceptions>
  
  <exception key="eXPired.InvalidItemsCatalogName"            type="com.  
  scope="request"
  
  path="error.jsp"/>
  
  </global-exceptions>
  
  ……
  
  ……
  
  上述代碼在struts-config.xml中定義了一個全局異常,它的作用是拋出InvalidiItemsCatalogNameException(本處的意思是當在添加商品分類的時候發現該類別已經存在)異常的時候返回到error.
jsp中,并且攜帶自定的比較規范的異常信息expired.InvalidItemsCatalogName,expired.InvalidItemsCatalogName可以在應用程序的資源配置文件中找到,如:
  
  expired.InvalidItemsCatalogName=你要添加的商品類別已經存在,請添加新的類別!
  
  局部異常,定義方法如下:
  
  ……
  
  ……
  
  <action-mappings>
  
  <action path=”/addItemsCatalogAction”
  
  type=”com.iplateau.jsop.action.ItemsCatalogAction”
  
  name=”itemsCatalogForm”>
  
  <exception key=” expired.InvalidItemsCatalogName”
  
  type=” com.iplateau.jshop.common.waf.exceptions.InvalidiItemsCatalogNameException”
  
  path=”/error.jsp”/>
  
  <forward name=”sUCcess” path=”***Layout(此處采用Tiles進行輔助開發)”/>
  
  </ation>
  
  </action-mappings>
  
  ……
  
  ……
  
  (關于Tiles的內容參看另一篇文章“Struts使用Tiles輔助開發”)
  
  下面我們把關注的目光放在具體action里,看看struts是如何進行異常處理的
  
  ItemsCatalogAction.java
  
  package com.iplateau.jshop.action.ItemsCatalogAction
  
  import com.iplateau.jshop.business.ItemsCatalogMap;
  
  import com.iplateau.jshop.action.ItemsCatalogForm;
  
  import ***;
  
  public class ItemsCatalogAction extends BaseAction {
  
  public ActionForward execute(
  
  ActionMapping mapping,
  
  ActionForm form,
  
  HttpServletRequest request,
  
  HttpServletResponse response)
  
  throws Exception {
  
  String flg=”error”;
  
  String act=request.getParameter(“act”);
  
  ItemsCatalogMap map=new ItemsCatalogMap();
  
  ItemsCatalogForm thisform=( ItemsCatalogForm)form;
  
  // ItemsCatalogMap為具體的處理商品類別的類
  
  If(act.equals(“create”)){
  
  map.validateNameOfCatalog(thisform);
  
  map.create(thisform);
  
  flg=”success”;
  
  return mapping.findForward(flg);
  
  }else{
  
  return mapping.findForward(flg);
  
  }
  
  }
  
  }
  
  上便是一個簡單的action,其中用act的具體內容來判定此時的action要處理的操作,如act為cteate的時候,處理的是商品類別的添加等等。
  
  看了上邊的代碼,可以了解,在調用具體的業務類進行添加商品類別以前先要判定此時要添加的商品類別的合法性,如:
  
  調用map.validateNameOfCatalog(thisform);
  
  其中在ItemsCatalogMap定義的validateNameOfCatalog方法拋出InvalidiItemsCatalogNameException。
  
  下面讓我們運行一下添加商品類別的例子,假如此時數據庫中已經存在“牛奶制品”這個商品類別,而我們又要添加此類別的時候,程序如我們預想的一樣轉到error.jsp并且顯示了我們要先是的錯誤信息:你要添加的商品類別已經存在,請添加新的類別!
  
  其實就這么簡單,我們的定制的異常在程序中并不需要用try/catch來捕捉,一旦出現了我們已經定義的異常那么就會轉到相應得頁面,并且攜帶定制的信息。
  
  還記得在struts先前的版本中我們的請求都是通過action的perform來處理,可是現在都要通過execute來處理,就其原因一個很重要的就是“成全”Exception Handling。為什么呢?
  
  因為perform在聲明的時候僅僅拋出IOException 和ServletException,這遠遠不能滿足Exception Handling的要求,那么讓我們看看execute是怎樣的:它籠統的拋出Exception(所有異常的父類)
  
  上面的闡述只是一個引子,而且默認struts的異常是通過org.apache.struts.action. ExceptionHandler來處理的,你可以定義自己的處理方式,只要繼續它并實現其中的execute方法,這個方法在ExceptionHandler的定義如下:
  
  public ActionForward execute(Exception ex,
  
  ExceptionConfig ae,
  
  ActionMapping mapping,
  
  ActionForm formInstance,
  
  HttpServletRequest request,
  
  HttpServletResponse response)
  
  throws ServletException
  
  具體而且專業的分析Exception Handling的內容,請參看《PRogramming Jakarta Struts》第10章——這本書的電子版網上很多地方可以下載。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产在线一级片 | 欧美精品成人一区二区在线观看 | 97中文字幕第一一一页 | 在线成人一区二区 | 特级毛片免费视频 | 黄色大片大毛片 | 国产无遮挡一级毛片 | 久久久成人精品 | 一级黄色在线观看 | 成年人黄色免费电影 | 国产精品免费一区二区三区都可以 | 日韩黄色免费电影 | 成人三级免费电影 | 欧美雌雄另类xxxxx | 亚洲第一成人在线视频 | 91精品国产一区二区三区四区在线 | 羞羞视频免费视频欧美 | 作爱在线观看 | 成人免费久久网 | 爱唯侦察 国产合集 亚洲 | a网站在线 | 中文字幕在线网站 | 激情九九| 久久国产精品区 | 激情小说另类 | 久久久一区二区三区精品 | 欧美视频在线一区二区三区 | 中文字幕11 | 国产精品性夜天天视频 | 国产精品久久久久永久免费 | 国产精品久久久久网站 | av成人一区二区 | 91中文字幕在线观看 | 免费色片| 欧美激情区 | 性少妇videosexfreexx入片 | 免费毛片在线 | 成人福利视频在线 | 午夜在线视频观看 | 九九热精品在线 | 中文字幕欧美专区 |