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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BPP 相关——02

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

BPP項目 HT 部分完成小結:

1、Action 類怎么寫?

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

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


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

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

注意:這里的dao層不時 iBatis提供的dao 層,而是和業務具體相關的操作。

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

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


2、action 怎么配置?

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


3、怎么寫與DB相關的測試?

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

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

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


4、怎么傳遞參數?


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

// from jsp params

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

// show to jsp params

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

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


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

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

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


6、多用戶數據操作,數據不一致問題

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

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

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

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

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


7、action 與 business 的對應關系

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

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

strut2框架下對應的 get / set 方法就會少。



8、緩存 sqlMapClient 時應注意的問題

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

但是這樣存在一個隱藏的風險:

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

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

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



總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。