久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

J道- 一個關(guān)于Struts Action的小框架, 請高手指點一下

 longssl 2006-01-07




 

首先是一個基類BaseAction
=================================================================
public class BaseAction extends ActionSupport {
/** 簡單的得到spring bean的方法*/
public Object getBean(String beanName) {
return this.getWebApplicationContext().getBean(beanName);
}

/** 由子類Action對象調(diào)用, 可以在初始化時反射自身的結(jié)構(gòu), 形成一個映射, 用來日后dispatchSubaction.
*
* @return 存放了methods對象的Map
*/
protected Map getMethodMap() {
......
}

/** 將Action轉(zhuǎn)移給子動作.
* 在子類中調(diào)用時,,只需要新建一個Object[] {參數(shù)1, 參數(shù)2, ...} 一般為 {form, request, dao}
* 然后調(diào)用dispatchSubAction(String, objects) 即可
*
* @param action 字符串,,決定子動作的方法名
* @param objs 參數(shù)對象列表
* @param methods 由getMethodMap得到的Map
* @return 用來findForward的別名
*/
protected String dispatchSubAction(String action, Object[] objs, Map methods) throws Exception {
......
}

之后是子類的寫法:
================================================================
public class SomeAction extends BaseAction {
protected Map methods = getMethodMap(); //各線程公用
//--------- 下面是此Action中公用的一些對象,線程安全,?
XxxDAO xxxDao=(XxxDAO) getBean("xxxDao");
XxxService xxxService = (XxxService) getBean("xxxService");

public ActionForward execute(......) throws Exception {
// ===================== 初始化環(huán)境 ===================== \\
XxxForm form = (XxxForm) actionForm;
ActionErrors errors = new ActionErrors();

// ==================== 獲取用戶參數(shù) ==================== \\
//主要是進行數(shù)據(jù)轉(zhuǎn)換如:form.setXxx() = form.getXxx().split("..");

// ==================== 調(diào)用業(yè)務(wù)邏輯 ==================== \\
Object[] params = {form, request, errors};
//這里的params要和下面定義的所有子程序的參數(shù)對應(yīng)起來
String forward = dispatchSubAction(form.getSubaction(), params, methods);

// ==================== 設(shè)置回傳參數(shù) ==================== \\
saveErrors(request,errors);
return mapping.findForward(forward);
}

//所有的子程序的參數(shù)聲明都應(yīng)該相同, 但是每個Action可以根據(jù)自己的情況有所區(qū)別
public String show(MonthDayExecuteForm form, HttpServletRequest request, ActionErrors errors) {
......
return "show";
}

public String edit(MonthDayExecuteForm form, HttpServletRequest request, ActionErrors errors) {
......
return "edit";
}

public String save(MonthDayExecuteForm form, HttpServletRequest request, ActionErrors errors) {
......
return "show";
}
}
================================================================
歸納:我知道struts有l(wèi)ookupDispatchAction,,1.2還有MappedAction,,但是那些東西使用起來都不太方便,。
1. 有的需要在MessageResources里面進行Submit按鈕文字定義。
2. 有的需要在config中有特殊的配置
3. 必須使用和execute完全相同的冗長的函數(shù)聲明
4. 各方法之間沒有交集,,難以實現(xiàn)統(tǒng)一的log處理,,代碼重復(fù)寫的太多,例如一個簡單的XxxForm form = (XxxForm) actionForm; 就必須寫在所有的子方法中,。

不知道我這樣做能不能較好的解決上面的問題,?雖然會帶來一些初始化的負(fù)擔(dān),但是實際運行時應(yīng)該不會怎么影響效率,。我主要關(guān)心的是,,這個結(jié)構(gòu)還可不可以優(yōu)化?另外有沒有什么安全/效率方面的硬傷,?望高手們多多指點,!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多