亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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>
  
  ……
  
  ……
  
 ?。P于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章——這本書的電子版網上很多地方可以下載。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91性高湖久久久久久久久_久久99| 18一19gay欧美视频网站| 精品亚洲一区二区| 日韩在线观看免费全| 国产在线精品一区免费香蕉| 国产精品久久久久久亚洲影视| 日韩国产高清视频在线| 国产日韩欧美视频在线| 亚洲成人亚洲激情| 欧美日韩视频在线| 在线a欧美视频| 亚洲天堂久久av| 国产香蕉精品视频一区二区三区| 欧美日韩免费区域视频在线观看| 欧美日韩国产丝袜美女| 欧美一级bbbbb性bbbb喷潮片| 日韩在线视频免费观看| 欧美成人精品在线| 日韩av最新在线| 欧美在线不卡区| 国产精品久久久久久超碰| 欧美一区在线直播| 日韩av电影在线网| 亚洲欧美中文日韩在线v日本| 亚洲女人天堂成人av在线| 亚洲日韩欧美视频一区| 日本韩国欧美精品大片卡二| 日本成人免费在线| 亚洲第一二三四五区| 亚洲第一中文字幕| 精品露脸国产偷人在视频| 国产成人精品免费久久久久| 97在线视频免费观看| 日韩在线观看免费高清完整版| 久久久久久久网站| 亚洲三级av在线| 国内精品久久久久影院优| 亚洲天堂免费视频| 色偷偷偷亚洲综合网另类| 日韩女优人人人人射在线视频| 在线播放国产一区中文字幕剧情欧美| 成人黄色片在线| 日韩电影在线观看免费| 久久久久久这里只有精品| 日本三级韩国三级久久| 国产精品免费一区二区三区都可以| 国产成人avxxxxx在线看| 一本色道久久综合亚洲精品小说| 亚洲天堂免费观看| 欧美日韩一区免费| 午夜精品久久久久久久白皮肤| 欧美富婆性猛交| 日韩av免费观影| 成人网址在线观看| 91chinesevideo永久地址| 日韩电影大片中文字幕| 国产精品久久在线观看| 精品香蕉在线观看视频一| 亚洲国产欧美一区二区丝袜黑人| 国产精品视频一| 97人洗澡人人免费公开视频碰碰碰| 法国裸体一区二区| 国产精品va在线播放我和闺蜜| 亚洲直播在线一区| 91精品综合视频| 欧美激情免费看| 国产午夜精品理论片a级探花| 亚洲综合av影视| 欧美专区在线视频| 视频一区视频二区国产精品| 欧美日韩亚洲成人| 国产日韩欧美一二三区| 91国产精品电影| 国产精品久久久久久久久免费| 亚洲精品国产suv| 国产这里只有精品| 国产97色在线|日韩| 国产精品69久久| 欧美激情视频在线| 在线看福利67194| 日韩欧美在线网址| 亚洲视屏在线播放| 日本在线观看天堂男亚洲| 日韩精品电影网| 欧美性猛交xxxx免费看漫画| 欧美黑人一级爽快片淫片高清| 成人黄色大片在线免费观看| 欧美激情国产日韩精品一区18| 欧美性色视频在线| 国产精品久久91| 最近中文字幕2019免费| 亚洲精品一区二区网址| 中文字幕一区电影| 神马久久桃色视频| 国产精品色悠悠| 日韩中文在线中文网三级| 国产精品v片在线观看不卡| 国产精品6699| 国产亚洲精品va在线观看| 国产一区二区三区高清在线观看| 亚洲精品视频在线观看视频| 91国产美女在线观看| 欧美激情在线狂野欧美精品| 一本色道久久88精品综合| 国产精品免费观看在线| 色999日韩欧美国产| 日韩中文字幕欧美| 欧美高清videos高潮hd| 国产精品自在线| 中文字幕九色91在线| 亚洲综合中文字幕在线观看| 92看片淫黄大片看国产片| 国产欧美精品va在线观看| 国产免费一区视频观看免费| 视频在线观看99| 亚洲热线99精品视频| 另类色图亚洲色图| 欧美一区亚洲一区| 人人做人人澡人人爽欧美| 日韩精品极品在线观看| 日韩中文字幕不卡视频| 茄子视频成人在线| 日韩精品在线影院| 成人免费网站在线| 国产亚洲精品91在线| 国产在线观看不卡| 日韩欧美中文字幕在线观看| 亚洲国产精品一区二区久| 精品国产成人在线| 国语自产在线不卡| 亚洲无亚洲人成网站77777| 日韩精品免费在线| 91成人国产在线观看| 亚洲日本欧美中文幕| 亚洲国产成人精品女人久久久| 91精品久久久久久久久久久久久久| 成人性生交大片免费看视频直播| 亚洲精品91美女久久久久久久| 中文字幕国产精品| 国产精品极品美女在线观看免费| xxxx性欧美| 日韩在线观看精品| 96精品视频在线| 亚洲欧洲视频在线| 北条麻妃一区二区在线观看| 成人精品久久一区二区三区| 色妞色视频一区二区三区四区| 国产精品久久久久久久av电影| 欧美成人免费全部观看天天性色| 国产欧美精品在线| 91精品国产乱码久久久久久久久| 久久久精品中文字幕| 精品女同一区二区三区在线播放| 久久精品欧美视频| 国产精品18久久久久久首页狼| 亚洲天堂网站在线观看视频| 8090成年在线看片午夜| 久久精品小视频| 91av视频在线免费观看| 欧美富婆性猛交| 久久久久久国产精品美女| 亚洲а∨天堂久久精品喷水| 欧美日韩中国免费专区在线看| 亚洲tv在线观看|