<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 最近在线2018视频免费观看| 成人免费无码H在线观看不卡| 97在线视频免费公开观看| 亚洲乱码精品久久久久..| 2022久久国产精品免费热麻豆| 亚洲色大成网站WWW久久九九| 亚洲免费一区二区| 69视频免费在线观看| 久久精品国产亚洲AV香蕉| 99久久免费观看| 在线观着免费观看国产黄| 亚洲成AV人在线播放无码| 中国性猛交xxxxx免费看| 亚洲韩国精品无码一区二区三区| 国产又黄又爽胸又大免费视频| 亚洲伊人色欲综合网| 日韩精品无码免费专区午夜不卡| 亚洲精品无码不卡在线播放HE | 亚洲伊人精品综合在合线| 免费无码婬片aaa直播表情| 999久久久免费精品播放| 亚洲av永久综合在线观看尤物| 成年人免费网站在线观看| 国产亚洲午夜精品| 亚洲综合无码精品一区二区三区| 免费高清国产视频| 久久精品亚洲AV久久久无码| 国产免费久久精品| 久久久久久免费一区二区三区| 亚洲另类精品xxxx人妖| 国产美女做a免费视频软件| 亚洲国产日韩在线一区| 在线观看免费国产视频| 三上悠亚在线观看免费| 亚洲国产超清无码专区| 国产免费观看黄AV片| 日本一卡精品视频免费| 国产亚洲人成在线播放| 免费看a级黄色片| 亚洲色精品三区二区一区| 亚洲一级特黄大片无码毛片 |