提供基于jt808協(xié)議的服務(wù)器Java源碼實(shí)現(xiàn)
Struts2的前景還是穩(wěn)健的,使用的人數(shù)在不斷的增加。參看struts 2依然堅(jiān)挺 Seam前景不明但基于Struts2的開(kāi)發(fā),如果沒(méi)有足夠的經(jīng)驗(yàn)和規(guī)范做支撐,并不能帶來(lái)還多的好處,如果失控,一樣和JSP+servlet泛濫,這一點(diǎn)需要警示。1).Action類(lèi)及Action Name的命名規(guī)范? Action類(lèi)的后綴統(tǒng)一加上"Action", ? Action的Name與類(lèi)的名稱保持一致,但不要"Action"的后綴。? 這樣是為了通過(guò)Action的調(diào)用url, 很方便的找到Action類(lèi)。
?
? 如上,看到/searchKnowledge.action,就可以很清楚的知道類(lèi)是SearchKnowledgeAction了。很多人不注重這一點(diǎn),開(kāi)發(fā)調(diào)試中,每次都要笨拙的看struts.xml文件。
2).每個(gè)項(xiàng)目都必須至少有一個(gè)公用的Action類(lèi),GenericAction? 完成的功能如下:? 1.獲取、注入request? 2.獲取、注入Session? 3.錯(cuò)誤頁(yè)面跳轉(zhuǎn)? 4.獲取在線用戶和會(huì)員的信息(個(gè)人信息、權(quán)限、角色等)? 5.注入類(lèi)型轉(zhuǎn)換的格式轉(zhuǎn)換類(lèi),如日期類(lèi)型轉(zhuǎn)換:ConvertUtils.register(new DateConverter(), Date.class);? 6.獲取系統(tǒng)配置信息,如公用變量(如配置路徑等)? 7.對(duì)于request參數(shù)的處理等? 8.其他可擴(kuò)展的操作
3).擅長(zhǎng)使用Dispatch的模式? 有人說(shuō)Action,不就是Dispatch的延伸嗎,其實(shí)還可以做的更好。
? 這個(gè)典型的模式如下:? 1.頁(yè)面表單的Hidden參數(shù)中,就是一個(gè)ID,如queryID="queryKnowledges". Action="/paginate.action"
? 2.PaginateAction的模板如下
????? 3.在struts.xml中進(jìn)行配置與queryID想對(duì)應(yīng):?
?? 實(shí)戰(zhàn)代碼如下:??
4).配置文件的目錄結(jié)構(gòu)?
5).不斷的提煉公用的Action,并放在一個(gè)package中:? 如上傳、下載、異常處理、excel數(shù)據(jù)錄入、過(guò)濾器(filter)、截取器(inteceptor)等等?
6).將一個(gè)模塊中的Action放置在一起???
7).擅與使用redirect來(lái)保持request參數(shù).? 使用redirect一樣可以將request參數(shù)傳遞到下一頁(yè)面中,不需要使用session.? viewPost?postid=${postid}?
8)靈活使用chain模式,來(lái)編寫(xiě)簡(jiǎn)短而高度重用的Action,把相關(guān)的幾個(gè)action連接起來(lái),共同完成一個(gè)功能。????? 同一個(gè)Chain的多個(gè)action間數(shù)據(jù)的傳遞非常方便,由于處于chain中的action屬于同一個(gè)http請(qǐng)求,共享一個(gè)ActionContext,故可以在上下文中獲取,在頁(yè)面上可以直接使用,上一個(gè)Action的成員變量。??????
9) 編寫(xiě)簡(jiǎn)潔而高度重用的Action的另一個(gè)方法,就是將頁(yè)面的渲染,格式轉(zhuǎn)換的邏輯,抽取出來(lái),自定義成Result。官方的Result
10) 明確Action類(lèi)不要超長(zhǎng),如不要超過(guò)500行代碼。???? 很多人為了偷懶,喜歡在一個(gè)Action中,不斷的添加方法,而不管這些方法與Action的語(yǔ)義是否符合,到底是多個(gè)Action,還是多個(gè)方法,在開(kāi)發(fā)過(guò)程中,還是要注重這些方法是否與創(chuàng)建Action類(lèi)的目的、語(yǔ)義保持一致。???? 最好明確代碼的長(zhǎng)度,團(tuán)隊(duì)人多,手雜,水平不一,為了保證可維護(hù)性,這是一個(gè)不得已的方法。
posted on 2008-11-27 08:54 Speed 閱讀(4827) 評(píng)論(5) 編輯 收藏 所屬分類(lèi): 框架設(shè)計(jì) 、struts2 、J2EE
GenericAction 貼出來(lái)一個(gè)看看 回復(fù) 更多評(píng)論
3).擅長(zhǎng)使用Dispatch的模式樓主這條應(yīng)該可以再斟酌 回復(fù) 更多評(píng)論
很實(shí)用的東東,謝謝分享,期待更多精彩! 回復(fù) 更多評(píng)論
try annotation and you will find it amazing... 回復(fù) 更多評(píng)論
似乎這幾點(diǎn)是所有的編程人員都要有的習(xí)慣! 回復(fù) 更多評(píng)論