Struts學(xué)習(xí)筆記之Action
摘要: 下面是Struts中的一些常用Action如DispatchAction/LookupDispatchAction/MappingDispatchAction/ForwardAction/IncludeAction的總結(jié)
1.DispatchAction extends BaseAction
一般的Action如
,在這里UserAction只需要繼承父類(extends Action類),然后重寫父類的execute方法,在execute中實(shí)現(xiàn)具體的控制轉(zhuǎn)向。
對(duì)于同一個(gè)formbean上進(jìn)行的新增、修改、刪除等,我們需要分發(fā)不同的Action,這里有兩種做法。
閱讀全文
Struts學(xué)習(xí)筆記之ActionForm
摘要: ActionForm中比較常用的兩個(gè)方法是reset()和validator():
// 恢復(fù)ActionForm屬性的默認(rèn)值,如把boolean型設(shè)為true/false,字符串設(shè)為null。
public void reset( ActionMapping mapping, HttpServletRequest request ) { }
// validate只檢查數(shù)據(jù)格式和語(yǔ)法,不檢查數(shù)據(jù)是否符合業(yè)務(wù)邏輯。
public ActionErrors validate( ActionMapping mapping, HttpServletRequest request ) { return (null); }
這兩個(gè)方法的默認(rèn)實(shí)現(xiàn)是不執(zhí)行任何操作,我們可以重寫這兩個(gè)方法來(lái)實(shí)現(xiàn)相關(guān)邏輯。
注:對(duì)于每個(gè)request,控制器都會(huì)先調(diào)用ActionForm的reset()方法,然后表單數(shù)據(jù)組裝到ActionForm中。如ActionForm在request范圍內(nèi),那么對(duì)于每個(gè)新的request請(qǐng)求都會(huì)創(chuàng)建新的ActionForm實(shí)
閱讀全文
Struts源碼學(xué)習(xí)之ActionServlet(二)
摘要: ④ 調(diào)用initChain(); 讀取web.xml中命令鏈文件初始值chainConfig
protected String chainConfig = "org/apache/struts/chain/chain-config.xml";
//④initChain();
// 如沒(méi)有chainConfig參數(shù),則使用默認(rèn)"org/apache/struts/chain/chain-config.xml"
String value;
value = getServletConfig().getInitParameter("chainConfig");
if (value != null) {
chainConfig = value;
}
閱讀全文
Struts源碼學(xué)習(xí)之ActionServlet(一)
摘要: Struts源碼最新版本為struts-1.3.8-src.zip (12-Mar-2007 00:06)
學(xué)習(xí)筆記使用struts-1.3.5-src.zip 的源碼,
下載地址:http://archive.apache.org/dist/struts/source/
2. 下面研究一下struts的源碼,由于servlet設(shè)置了load-on-startup,所以tomcat啟動(dòng)時(shí)會(huì)加載ActionServlet,也就是會(huì)執(zhí)行ActionServlet中的init()方法,Struts 的初始化實(shí)現(xiàn)就是在這里實(shí)現(xiàn)的。
注:由于servlet的生命周期為 web容器加載和實(shí)例化類/init()初始化/service()請(qǐng)求處理/destroy()四個(gè)階段,而init()方法在tomcat啟動(dòng)后只執(zhí)行一次,所以如果想在tomcat啟動(dòng)后用debug模式查看ActionServlet中init()方法的執(zhí)行,可以把上面的
2注釋掉就可以了(不過(guò)真正開(kāi)發(fā)時(shí)還是需要的)。
閱讀全文
Struts學(xué)習(xí)筆記之MVC模式
摘要: View:由JSP、Struts自定義標(biāo)記庫(kù)、資源文件(MessageResources.properties)共同組成,通過(guò)ActionForm實(shí)現(xiàn)JSP表單的封裝,并映射到Model部分中JavaBean的相應(yīng)屬性中,完成用戶數(shù)據(jù)的封裝。
注意:關(guān)于ActionForm,有些人認(rèn)為它屬于Model層(仁者見(jiàn)仁,智者見(jiàn)智)。
事實(shí)上它不是Model,真正的Model應(yīng)該是一個(gè)封裝了業(yè)務(wù)邏輯的的對(duì)象。
而ActionForm僅僅是一個(gè)form-bean,封裝了用戶提交的表單數(shù)據(jù)(物理View),可以在其中進(jìn)行一些非業(yè)務(wù)邏輯的驗(yàn)證,并沒(méi)有真正的映射到模型數(shù)據(jù),因?yàn)榕c層的關(guān)系比較密切,所以實(shí)際上它應(yīng)該算是View層(邏輯View)。
閱讀全文