為了在struts中載入spring context,需要在struts-config.xml檔案中加入如下部分:
第一種方法:通過struts的plug-in在struts和spring之間提供了良好的結合點。通過plug-in我們實現了spring context的載入,不過僅僅載入spring context並沒有什麼實際的意義,還應該經過配置將struts的action交給spring容器進行管理。
type="org.springframework.web.struts.delegatingactionproxy"
name="loginform">
.......
最後這個bean的配置是關鍵,這個名為「/login」的bean與struts中的
……節點相對應,這樣,spring bean name與struts action path相關聯,當struts載入對應的action時,delegatingactionproxy就根據傳入的path屬性,在spring context尋找對應bean,並將其實例返回給struts。與此同時,還可以看到,"/login" bean 中包含了乙個userdao 引用,spring 在執行期將根據配置為其提供userdao 例項,以及圍繞userdao 的事務管理服務。這樣一來,對於struts 開發而言,我們既可以延續struts 的開發流程,也可以享受spring 提供的事務管理服務。而bean 的另外乙個屬性singleton="false",指明了action 的例項獲取方式為每次重新建立。這也解決了struts中令人詬病的執行緒安全問題。
第二種方法:
增加這些設定之後,不管你查詢任何型別的 action,sping都自動在它的context配置檔案中尋找。 實際上,你甚至不需要指定型別。下面兩個**片斷都可以工作:如果你使用 struts 的 modules 特性,你的 bean 命名必須含有 module 的字首。 舉個例子,如果乙個 action 的定義為 ,而且它的 module 字首為「admin」, 那麼它應該對應名為 的 bean。
如果你在 struts 應用中使用了 tiles,你需要配置 為 delegatingtilesrequestprocessor。
如果第二種方法不行,再用第一種方法。至此,ss組合已經將struts mvc以及spring中的bean管理、事務管理融為一體。如果算上userdao 中的hibernate 部分,我們就獲得了乙個全面、成熟、高效、自頂而下的web 開發框架。
spring struts 無縫整合方式
step1 依賴和基本常識 1.首先要新增整合的核心jar包 struts2 spring plugin 2.3.16.3.jar。2.按照名稱匹配的原則,定義業務bean和action中的setter方法,注意呼叫的是set方法而不是屬性,但是一般命名一致便於閱讀。3.struts.xml中按照正...
spring struts整合 兩種方案
spring struts整合 第一種方案 原理 在action中取得beanfactory物件,然後通過beanfactory獲取業務邏輯物件 總結,從action上來看這種方案存在的缺點,它產生了依賴,loginaction如果離開spring,loginaction依賴了beanfactory...
Spring Struts整合的四種方式
1.在action中取得beanfactory物件,然後通過beanfactory獲取業務邏輯物件 web.xml 2 將業務邏輯物件通過spring注入到action中,從而避免了在action類中的直接 查詢,web.xml配置同上 在struts config.xml檔案中配置action 標...