和女主角Action 對象共舞
什么是Action?
和常規(guī)的web 應用相比,Struts Action 類工作起來就象一個小型的servlet。在大多數(shù)Java
應用中,諸如訪問業(yè)務(wù)層的任務(wù)、錯誤處理等任務(wù)均是由servlet 承擔的。在一個 Struts 應
用中,servlet 扮演著一個分派器的角色。而Action 對象則干實際的工作。象 servlets 一樣,
Action 對象是多線程的。每個應用只需要一個Action 類的實例。
Action做些什么?一個典型的Action 的職責通常是:
?? ■校驗前提條件或者聲明
?? ■調(diào)用需要的業(yè)務(wù)邏輯方法
?? ■檢測其它處理錯誤
?? ■將控制路由到相關(guān)視圖檢驗輸入: Action 需要做的就是確認ActionForm 是否是需要的類型。
調(diào)用邏輯業(yè)務(wù):Action 類是HTTP 與應用系統(tǒng)中其它部分之間的適配器。最重要的是要避免將業(yè)務(wù)邏輯放入
Action 之中。Action 類應該只是簡單地收集業(yè)務(wù)方法需要的數(shù)據(jù)并傳遞它到具體的業(yè)務(wù)對
象。如果你同時在編寫業(yè)務(wù)類和Action 類,可能會受到要將它們編寫在一起的誘惑。一定
要抵擋這種誘惑,并且將業(yè)務(wù)方法放入Action 可調(diào)用的單獨的類之中。Java 虛擬機(JVM)
針對這種方法調(diào)用作了優(yōu)化;性能損失可以忽略不計。
同時你也得到了一些設(shè)計上的優(yōu)勢
Action檢測錯誤:
Struts具有一個設(shè)計良好的錯誤處理系統(tǒng),允許你可以:
??■ 同時截獲幾個錯誤
??■ 在請求中傳遞錯誤數(shù)據(jù)包
??■ 顯示本地化信息
這個處理流程涉及到兩個對象 (ActionErrors 和 ActionError) 和一個注冊錯誤的工
具方法(saveErrors) 。其它兩個對象 (MessageResources 和 一個定制標簽)則用來顯
示錯誤信息
注冊錯誤總體流程歸結(jié)為:
??1 創(chuàng)建一個空的ActionErrors 實例
??2 在錯誤發(fā)生時,為錯誤信息添加關(guān)鍵字;
??3 檢查是否添加了某些信息
??4 保存ActionErrors 集合對象到請求中
??5 ?轉(zhuǎn)發(fā)控制到錯誤頁面以顯示信息
??6? 否則,正常繼續(xù)
例如
ActionErrors?errors?=?new?ActionErrors();

try?
{
//?*?調(diào)用業(yè)務(wù)對象?*
}

catch?(ModelException?e)?
{
errors.add(ActionErrors.GLOBAL_ERROR,
new?ActionError("error.detail",e.getMessage()));
}

if?(!errors.empty())?
{
saveErrors(Request,?errors);
return?(mapping.findForward("error"));
}
//?*?正常繼續(xù)?*
posted on 2006-12-14 10:32
Super·shen BLOG 閱讀(422)
評論(0) 編輯 收藏 所屬分類:
JAVA技術(shù)