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

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

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

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

    第一部分:Web.Xml中ContextLoaderListener的相關配置
    在工程目錄下的\WebContent\WEB-INF\web.xml中,我們可以發現以下配置:

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml</param-value>
    </context-param>

     

    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>

    以上第一段XML中,contextConfigLocation參數定義了要載入Spring上下文的配置文件,這里采用了通配符的方式,也可以通過逗號符來分隔多個文件。
    以上第二段XML定義了一個監聽器,它適用于Servlet2.3及其以上版本,這個監聽器會隨著WebApp的啟動而啟動,并加載contextConfigLocation參數中定義好的Spring配置文件。若是在Servlet2.3以下版本中,則需要定義org.springframework.web.context.ContextLoaderServlet來載入配置文件。

    第二部分:Action Bean的配置
    接下來我們需要將Struts2的Action交給Spring管理,以com.heyang.module.contract.action. CheckSoleContractNameAction類為例,它在Spring配置文件\WebContent\WEB-INF\applicationContext-action.xml中的相應配置為:

    <bean id="checkSoleContractNameAction"   class="com.heyang.module.contract.action.CheckSoleContractNameAction" singleton="false">
            
    <property name="contractService">
                
    <ref bean="contractService"/>
            
    </property>
    </bean>

    由上面的XML知道,如果我們取得名為checkSoleContractNameAction的bean,Spring將通過反射調用一個com.heyang.module.contract.action.CheckSoleContractNameAction類的實例,并將一個名為contractService的bean注入進去,當然CheckSoleContractNameAction需要擁有此屬性并具備對應的setter/getter。

    第三部分:在Struts配置文件中將url映射到Spring上下文中的bean
    這種方式是通過指定<action>的class屬性為Spring配置文件中相應bean的id值來做到的,再以CheckSoleContractNameAction為例,它在Struts2配置文件WebContent\WEB-INF\struts-cfg\contract\struts.xml中的相應設置為:
    <action name="checkSoleContractName" class="checkSoleContractNameAction" method="execute"/>
    這樣,當頁面中url有對應用上下文/contract/checkSoleContractName.action?...
    時,com.heyang.module.contract.action.CheckSoleContractNameAction類的execute方法將會來處理用戶的請求。注意,這段url中,應用上下文是WebApp Context,contract是action所在包的名稱空間,checkSoleContractName則是action的name。

    至此,Struts2和Spring的整合配置講述完畢。

    第四部分:Struts2與Spring的整合原理
    在\WebContent\WEB-INF\lib\下存在一個struts2-spring-plugin-2.0.9.jar,這個插件包的作用是通過覆蓋(override)Struts2的ObjectFactory來增強核心框架對象的創建。當Struts2需要根據配置文件創建一個Action的時候,它會用Struts2配置文件中的class屬性去和Spring配置文件中的id屬性進行關聯,如果能找到,則由Spring創建;否則由Struts 2框架自身創建。這個功能是通過插件提供的兩個攔截器實現的,默認情況下框架使用的自動裝配策略是name,也就是說框架會去Spring中尋找與Action屬性名字相同的bean,可選的裝配策略還有:type、auto、constructor等。

    第五部分:Spring與Hibernate的整合
    通常來說,每個負責具體請求的Action都會被注入一個或多個Service bean(參見applicationContext-action.xml),而每個Service Bean都會被注入一個DAO bean(參見applicationContext-dao.xml),而每個dao bean都被被注入一個hibernateTemplate來與數據庫交互(參見applicationContext-dao.xml),而在applicationContext-db.xml中,說明了hibernateTemplate的由來,它最終會找到一個datasource從而找到數據庫。

    這樣,從前臺Struts2的控制器到后臺數據庫,S2SH整個鏈條就被串起來了。

    posted on 2011-03-13 23:41 何楊 閱讀(612) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 91嫩草免费国产永久入口| 亚洲最大AV网站在线观看| 亚洲女人初试黑人巨高清| 美女内射无套日韩免费播放| 亚洲国产成人片在线观看| 国内精品一级毛片免费看| 亚洲国产精品久久| 国产A在亚洲线播放| 久草免费福利视频| 亚洲人成在线观看| 成年人免费的视频| 亚洲日韩一区二区一无码| 精品一卡2卡三卡4卡免费视频| 久久国产亚洲精品麻豆| 免费A级毛片无码视频| 亚洲第一页在线视频| 最近2019中文字幕mv免费看| 黄色三级三级免费看| 亚洲精品午夜无码专区| 污视频网站免费观看| 亚洲熟妇av一区二区三区| 国产亚洲成在线播放va| 国产日产亚洲系列最新| 鲁啊鲁在线视频免费播放| 国外亚洲成AV人片在线观看| 无码AV片在线观看免费| 亚洲妇女熟BBW| 亚洲日韩国产成网在线观看| 七色永久性tv网站免费看| 激情五月亚洲色图| 亚洲精品第一国产综合精品99| 亚洲性色AV日韩在线观看| 亚洲国产aⅴ综合网| 久久成人免费大片| 亚洲国产精品99久久久久久| 亚洲一区二区三区国产精品| 99在线观看免费视频| 男男黄GAY片免费网站WWW| 亚洲国产人成在线观看69网站| 午夜视频在线观看免费完整版| 久久精品无码专区免费|