日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BPP 相关——02

發(fā)布時間:2024/7/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BPP 相关——02 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

BPP項目 HT 部分完成小結(jié):

1、Action 類怎么寫?

?? ? ?現(xiàn)在的做法是Action 層直接與 dao 層耦合,所有的功能都在 Action 類中完成。

?? ? ?缺點:如果 Action1 與 Action2 兩個類有部分功能重復(fù),在“避免重復(fù)代碼”這樣的原則下, Action2 類會實例化一個 Action1 類然后調(diào)用其方法。這樣就要求 Action1 的該方法為public 修飾,這就與action 的方法是相同的修飾,會使得該Action 類的功能(提供的action)混亂。這樣顯然不好!而且所有的功能都在 Action 類中,這樣 public、private 的方法必然混在一起,混亂不清!


?? ? ?建議修改:增加一個service 層。

?? ? ?Action 類的 public 方法全部為 action(這樣一眼就知道該 Action 類有哪些具體的action),其內(nèi)部實現(xiàn)細節(jié)交給 service。當然Action 類也是有一些私有方法——處理 field 域與頁面間的參數(shù)傳遞。(如 ManualInputWeightAction 的 initFirstManualInputParams( )方法, initContinueManualInputParams( ) 方法)對于重復(fù)的功能,重復(fù)使用service,而不是Action。

注意:這里的dao層不時 iBatis提供的dao 層,而是和業(yè)務(wù)具體相關(guān)的操作。

優(yōu)點:方便測試 business 層的類,因為可以很容易的 Mock 一個dao 類對象的操作。

建議:如果 Action 類有多個action,那么就不要使用默認的 execute( )方法。而是每個方法指明其功能(好的方法名)。


2、action 怎么配置?

?? ? ?不要將所有的action 配置在一個<package/>里,要根據(jù)不同的“功能模塊”配置不同的<package namespace="/?功能模塊名" />。這樣容易查找,也可以避免命名沖突。“功能模塊”的名稱要盡早取,也要與 Action類的包名保持一致。


3、怎么寫與DB相關(guān)的測試?

?? ? ?如果是直接構(gòu)造數(shù)據(jù),然后插入DB。第一操作肯定是可以,但是第二次呢?這樣做顯然不適合單元測試。

?? ? ?如果采用每次測試前構(gòu)造DB數(shù)據(jù)(static 方式),測試完后即清空。這樣適合單元測試,不過就是效率問題。

?? ? ?再則采用EasyMock 的方式。


4、怎么傳遞參數(shù)?


階段1,獲取jsp頁面參數(shù),action 提供set方法;添加如下注釋:

// from jsp params

階段2,action提供參數(shù)給jsp頁面顯示,action提供get方法。添加如下注釋:

// show to jsp params

階段1-2,action提供get / set 方法。添加如下注釋:

// from jsp to jsp params?? ? ?注意:如果Action 類有太多的field 供jsp頁面顯示,那就封裝一個JavaBean,避免Action 類太混亂。


5、查詢數(shù)據(jù)部分(注意效率)

?? ? ?a、不要將全部數(shù)據(jù)都取出在計算或顯示,一定要縮小范圍,只取當前有用的最小集合。

?? ? ?b、能用select 語句完成的,盡量用select 語句完成(如,SUM、MAX、MIN、AVG....)


6、多用戶數(shù)據(jù)操作,數(shù)據(jù)不一致問題

例如:用戶A 和用戶B 同時對某條記錄的

(A)修改-(B)修改 操作 ? ?用戶B沒看到用戶A 的修改操作,可能導(dǎo)致數(shù)據(jù)不一致

(A)修改-(B)刪除 操作 ? 安全

(A)刪除-(B)刪除 操作 ? 安全

(A)刪除-(B)修改 操作 ? 一定錯誤(應(yīng)該給錯誤提示)


7、action 與 business 的對應(yīng)關(guān)系

多個action 對應(yīng)一個business(如下圖)。

優(yōu)點:明確參數(shù)的傳遞——哪個action需要哪些參數(shù)(傳遞進來的或返回出去的)

strut2框架下對應(yīng)的 get / set 方法就會少。



8、緩存 sqlMapClient 時應(yīng)注意的問題

BPP 項目中,為了優(yōu)化性能緩存了 sqlMapClient 對象(根據(jù) companyId 對應(yīng)一個DB 的 schema)。

但是這樣存在一個隱藏的風(fēng)險:

1、當修改了 schema 鏈接用的用戶名密碼,使用緩存的 sqlMapClient 顯然會出錯。

2、刪除了該 schema 但是又為該 companyId新建了一個對應(yīng)的 schema,使用緩存的 sqlMapClient 也錯誤。

解決辦法:使用緩存的 sqlMapClient 對象之前,測試其有效性。有效,就使用;無效,新建一個再使用。



總結(jié)

以上是生活随笔為你收集整理的BPP 相关——02的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。