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

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

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

    posts - 7,  comments - 58,  trackbacks - 0


    Spring與Struts集成開發

    最近喜歡將所學的東西理順一下,且發現寫blog可以達成這目的。
    那就來整理一下我對Spring與Struts集成開發的一些想法。

    首先確認系統的結構為三層的B/S模式結構,如下圖:

    在圖中看出,Spring和Struts集成開發中,Spring在業務邏輯層被使用(集成)。因為Spring框架的依賴注入,AOP及可聲明的事務管理方面的技術優勢,使得用Spring來管理業務實體,實體之間的依賴關系,業務邏輯服務接口變得簡單且可配置。至此我們要清楚:Spring和Struts集成開發中,Spring在業務邏輯層被使用(集成)。

    清楚Struts和Spring在系統結構中分別充當的角色后,接下來要討論:如何實現集成
    1、使用Spring的ActionSurpert類集成Struts。
    org.springframework.web.struts.ActionSurpert是一個繼承org.apache.struts.action.Action的類,簡要代碼如下:
    public abstract class ActionSurpert extends Action {
         private WebApplicationContext webApplicationContext;
         public void setServlet(ActionServlet actionServlet) {//當容器實例化此Action時被容器調用
               surper.setServlet(actionServlet);
               if(actionServlet != null) {
                  this.webApplicationContext = initWebApplicationContext(actionServlet);//獲取webApplicationContext
                   //........
               }else{
                 //.......
               }           
         } 
         
         //通過getXXX()方法獲取   webApplicationContext 對象
         protected final WebApplictionContext getWebApplicationContext() {
                return this.webApplicationContext;
        }
    }
    通過上述代碼可以看出,所有繼承了ActionSupport類的Action將可以通過WebApplicationContext對象的getBean(beanKey)方法獲得Spring配置文件中定義的各種Bean。
    WebApplicationContext要由Web Server來加載,有兩種方法:
    1、通過org.springframework.web.struts.ContextLoaderPlugIn加載,ContextLoaderPlugIn是個插件,需要在Struts配置文件中配置。
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
       <set-property property = "contextConfigLocation" value="/WEB-INF/applicationContext.xml"></set-property>
    </plug-in>
    2、在web.xml文件中加載
    <context-param>
      <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <servlet>
     <servlet-name>context</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-name>
    <load-on-startup>1</load-on-startup>
    </servlet>
    舉個簡單的例子說明一下相關配置信息:
    假定有ExampleAction,ExampleBean,ExampleService這幾個類,它們工作流程是:
    用戶請求ExampleAction,ExampleAction調用ExampleService的接口方法對ExampleBean進行相關的操作。
    1、applicationContext.xml中配置相關的bean信息
    <beans>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName">
       <value>com.mysql.jdbc.Driver</value>
      </property>
      <property name="url">
       <value>jdbc:mysql://localhost:3306/ssh?useUnicode=true&amp;characterEncoding=UTF-8</value>
      </property>
      <property name="username">
       <value>root</value>
      </property>
      <property name="password">
       <value>root</value>
      </property>
     </bean>
    <bean id="exampleBean" class="org.mypackge.beans.ExampleBean"/>
    <bean id="exampleBeanService" class="org.mypackge.services.ExampleService"/>@
    </beans>
    通過這樣配置后,在ExampleAction中可以用getWebApplicationContext() 獲得webApplicationContext對象,然后通過
    webApplicationContext的getBean(beanKey)方法獲得相應的bean進行業務處理。標了紅色的"beanKey"就是applicationContext.xml中<bean>元素定義的bean id,如:webApplicationContext.getBean("exampleBeanService")。@

    當然,ExampleAction還要在stuts-config.xml配置文件中配置,這里不作介紹。
    2、使用Spring的Action代理集成Struts
    這種集成方式的核心思想是,將Struts的配置文件中的所有Action的type屬性設為org.springframwork.web.struts.DelegationActionProxy。當用戶請求Action時,就執行這代理,代理會在Spring應用上下文中找到真正的Action,然后交給它處理用戶的請求。而真正用于處理用戶請求的Action的配置放在了Spring的配置文件中。這樣,Struts中的Action以及其依賴關系就可以用Spring容器來管理,比如將業務邏輯對象注入到Action中,供其使用。簡單片段<bean name="/exampleAction" class="org.myproj.struts.actions.ExampleAction">
    ....
    </bean>
    說明:用name屬性而不是用id來標識這個Bean,Spring不允許ID中出現"/",而name可以;"name"屬性值要和struts-config.xml文件中相應<action>元素中的path屬性值相同(<action path="/exampleAction"),這樣Action代理才能找到相應的Action來處理請求。

    歡迎討論,提出寶貴意見。


    posted on 2008-03-01 11:08 Sonny Li 閱讀(830) 評論(2)  編輯  收藏 所屬分類: 框架相關

    FeedBack:
    # re: Spring與Struts集成開發[未登錄]
    2008-03-03 11:23 | Paul Lin
    不錯不錯,很好很強大  回復  更多評論
      
    # re: Spring與Struts集成開發
    2008-05-09 22:36 |
    有前途。。很努力哦。。頂。。  回復  更多評論
      

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


    網站導航:
     
    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    收藏夾

    博客好友

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久夜色精品国产亚洲 | 黄网站色视频免费观看45分钟| 久久国产精品免费看| 亚洲综合熟女久久久30p| 一级a性色生活片久久无少妇一级婬片免费放 | 99久久国产精品免费一区二区| 免费在线观看a级毛片| 黄色毛片视频免费| jlzzjlzz亚洲乱熟在线播放| 免费国产a理论片| 免费99热在线观看| 岛国岛国免费V片在线观看| 久久精品国产亚洲精品| gogo免费在线观看| 亚洲AV午夜成人影院老师机影院| 不卡视频免费在线观看| 亚洲VA中文字幕不卡无码| 久久久久国产精品免费看| 亚洲美女精品视频| 女人18毛片a级毛片免费| 在线看亚洲十八禁网站| 亚洲国模精品一区| 一区二区三区无码视频免费福利| 亚洲AV日韩AV高潮无码专区| 国产精品永久免费10000| 亚洲精品无码专区在线| 亚洲伊人久久综合中文成人网| A级毛片成人网站免费看| 久久久久久a亚洲欧洲AV| 全免费毛片在线播放| 日韩国产欧美亚洲v片| 亚洲人成人无码网www国产| 日韩精品免费视频| 日韩亚洲产在线观看| 亚洲一本大道无码av天堂| 毛片无码免费无码播放| 亚洲av日韩综合一区二区三区| 亚洲精品成人a在线观看| 亚洲免费视频在线观看| 亚洲精品美女久久久久久久| 亚洲午夜福利在线观看|