<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心的方向

    新的征途......
    posts - 75,comments - 19,trackbacks - 0

    Spring與Struts如何整合

    轉自:http://lihaiyan.javaeye.com/blog/127812
    為了在Struts中加載Spring context,需要在struts-config.xml文件中加入如下部分:
    <struts-config>
      <plug-in
             className="org.springframework.web.struts.ContextLoaderPlugIn">
         <set-property property="contextConfigLocation"
             value="/WEB-INF/applicationContext.xml" />
      </plug-in>
    </struts-config>
    第一種方法:
        通過Struts的plug-in在Struts和Spring之間提供了良好的結合點。通過plug-in我們實現了Spring context的加載,不過僅僅加載Spring context并沒有什么實際的意義,還應該經過配置將Struts的Action交給Spring容器進行管理。
    <action-mappings>
      <action path="/login"
                 type="org.springframework.web.struts.DelegatingActionProxy"
                 name="loginForm">
          <forward name="success" path="/main.jsp" />
          <forward name="failure" path="/login.jsp" />
    </action>
        在form bean這個節點上與傳統的Struts配置沒有什么區別,而在Action上面則發生了變化。在傳統的action節點上type屬性寫入action類的完整類名,而和Spring結合后在這點上是使用了Spring提供的DelegatingActionProxy
    作為action的type屬性,DelegatingActionProxy同樣是org.apache.struts.action.Action的一個子類,它將把調用請求轉交給真正的Action實現。通過這樣的方式,Spring獲得了Action實例的管理權,它將對Action進行調度,并為Struts提供所需的Action實例。這樣,就可以將Action看作是Spring的一個bean,它就可以享受Spring的所有服務,如依賴注入、實例管理、事務管理等。
        在applicationContext.xml中相應的配置如下的節點:
    <beans>
    .......
        <bean name="/login" class="net.xiaxin.action.LoginAction"
                               singleton="false">
            <property name="userDAO">
               <ref bean="userDAOProxy" />
            </property>
        </bean>
    </beans>
        最后這個bean的配置是關鍵,這個名為“/login”的bean與Struts中的
    <action path="/login" ……>
    ……
    </action>
    節點相對應,這樣,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中令人詬病的線程安全問題。
    第二種方法:

    為了在 struts-config.xml 文件中配置 DelegatingRequestProcessor,你需要重載 <controller> 元素的 “processorClass” 屬性。 下面的幾行應該放在 <action-mapping> 元素的后面。

    <controller>
    <set-property property="processorClass"
    value="http://www.zhmy.com/org.springframework.web.struts.DelegatingRequestProcessor"/>
    </controller>

    增加這些設置之后,不管你查詢任何類型的 Action,Sping都自動在它的context配置文件中尋找。 實際上,你甚至不需要指定類型。下面兩個代碼片斷都可以工作:

    <action path="/user" type="com.whatever.struts.UserAction"/>
    <action path="/user"/>

    如果你使用 Struts 的 modules 特性,你的 bean 命名必須含有 module 的前綴。 舉個例子,如果一個 Action 的定義為 <action path="/user"/>,而且它的 module 前綴為“admin”, 那么它應該對應名為 <bean name="/admin/user"/> 的 bean

       
    如果你在 Struts 應用中使用了 Tiles,你需要配置 <controller> 為 DelegatingTilesRequestProcessor

    如果第二種方法不行,再用第一種方法。   
     至此,SS組合已經將Struts MVC以及Spring中的Bean管理、事務管理融為一體。如
    果算上userDAO 中的Hibernate 部分,我們就獲得了一個全面、成熟、高效、自頂而下的
    Web 開發框架。

    來源:http://deathmask1980.spaces.live.com/blog/cns!8633c46371110374!118.entry


    posted on 2008-04-10 16:46 阿偉 閱讀(779) 評論(0)  編輯  收藏 所屬分類: 框架整合
    主站蜘蛛池模板: 亚洲欧洲自拍拍偷午夜色无码| 国产又粗又猛又爽又黄的免费视频 | 国产亚洲精久久久久久无码| 色吊丝免费观看网站| 永久在线毛片免费观看| 亚洲国产精品无码久久98| 成人在线视频免费| 亚洲av无码专区在线电影| 日韩成人免费在线| 四虎影视永久在线精品免费| 亚洲综合亚洲综合网成人| 国产又黄又爽又大的免费视频 | 无码欧精品亚洲日韩一区| 国产精品视频白浆免费视频| 精品亚洲麻豆1区2区3区| 国产香蕉免费精品视频| 亚洲Av高清一区二区三区| 日本特黄特色免费大片| 色哟哟国产精品免费观看| 国产v亚洲v天堂无码网站| 97av免费视频| 亚洲一区二区三区在线观看网站| 日韩伦理片电影在线免费观看| 暖暖免费中文在线日本| 亚洲av日韩专区在线观看| 国产一区二区三区在线免费观看 | 亚洲福利一区二区| 九九九精品成人免费视频| 老司机午夜免费视频| 国产亚洲人成网站观看| 在线视频免费观看爽爽爽| 久久无码av亚洲精品色午夜| 亚洲无线码一区二区三区| 精品免费久久久久久久| 免费人成再在线观看网站| 亚洲成a人片在线观看日本| 成人免费在线视频| 免费一级不卡毛片| 18禁亚洲深夜福利人口| 久久亚洲精品AB无码播放| 国产男女猛烈无遮档免费视频网站|