j2ee
架構中各層的資料表示方法
web
層的資料表示是
formbean
,資料**於
html form post
業務層的資料表示是vo
持久層的資料表示是
po,其資料**於資料庫,持久層的資料表示例如
cmp。在乙個規範的
j2ee
架構中,不同層的資料表示應該被限制在層內,而不應該擴散到其它層,這樣可以降低層間的耦合性,提高
j2ee
架構整體的可維護性和可擴充套件性。比如說
web層的邏輯進行了修改,那麼只需要修改
formbean
的結構,而不需要觸動業務層和持久層的**修改。同樣滴,當資料庫表進行了小的調整,那麼也只需要修改持久層資料表示,而不需要觸動業務層**和
web層**。
jsp(view) ---> action form bean (module) ---> action(control)
action form bean
是web
層的資料表示,它和
html
頁面form
對應,只要
web頁面的操作流程發生改變,它就要相應的進行修改,它不應該也不能被傳遞到業務層和持久層,否則一旦頁面修改,會一直牽連到業務層和持久層的大面積的**進行修改,對於軟體的可維護性和可擴充套件性而言,是乙個災難,
actiont
就是他的邊界,到此為止!
action(web control) ---> business bean ---> dao ---> orm --->db 而
po則是業務層和持久層的資料表示,它在業務層和持久層之間進行流動,他不應該也不能被傳遞到
web層的
view
中去,而
actionservlet
就是他的邊界,到此為止!
整個架構的流程:
當使用者通過瀏覽器訪問網頁,提交了乙個頁面。於是
action
拿到了這個
formbean
,他會把
formbean
屬性讀出來,然後構造乙個
po物件,再呼叫業務層的
bean
類,完成了註冊操作,重定向到成功頁面。而業務層
bean
收到這個
po物件之後,呼叫
dao介面方法,進行持久物件的持久化操作。 業務
bean
取得name(
注意: name
物件只是
user
的乙個屬性
)物件之後呼叫
dao介面,返回乙個
user的po
物件,注意這個
user
不同於在
web層使用的
userformbean
,他有很多集合屬性滴。然後業務
bean
把user
物件返回給
action。
總結:
form bean
是web
層的資料表示,他不能被傳遞到業務層;
po是持久層的資料表示,在特定情況下,例如
hibernate
中,他可以取代
vo出現在業務層,但是不管
po還是
vo都必須限制在業務層內使用,最多到達
web層的
control
,絕不能被擴散到
view去。
form bean 和po
之間的資料轉化是在
action
中進行滴。
J2EE中的路徑問題
解決方案 採用絕對路徑,但為了解決不同部署方式的差別,在所有非 struts 標籤的路徑前加 如原路徑為 images title.gif 改為 images title.gif 的作用是取出部署的應用程式名,這樣不管如何部署,所用路徑都是正確的。缺點 操作不便,其他工具無法正確解釋 採用相對路徑,...
J2EE中的Config與Context引數應用
我們先來回顧一下各種內建物件的作用範圍 這兩個屬性的作用範圍最小。時間上 只是本身請求和應答完成就失效,當然 是把當前的request物件取出來傳給另乙個資源,其實本身的request物件還是只生存到本次請求結束,response也同樣。空間上 只能傳送請求的客戶端有效。一次鏈結到客戶端關閉,時間作...
Spring在J2ee中的角色
在ssh框假中spring充當了管理容器的角色。我們都知道hibernate用來做持久層,因 為它將jdbc做了乙個良好的封裝,程式設計師在與資料庫進行互動時可以不用書寫大量的sql語 句。struts是用來做應用層的,他它負責呼叫業務邏輯serivce層。所以ssh框架的流程大致 是 jsp頁面 ...