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

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

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

    posts - 68, comments - 19, trackbacks - 0, articles - 1

    Struts1和Spring的集成

    Posted on 2011-02-09 18:37 viery 閱讀(1405) 評論(1)  編輯  收藏
    轉(zhuǎn)自王勇老師筆記
    第一種集成方案

    原理:在Action中取得BeanFactory對象,然后通過BeanFactory獲取業(yè)務(wù)邏輯對象

    缺點:產(chǎn)生了依賴,spring的類在action中產(chǎn)生了依賴查找。(注意和依賴注入的區(qū)別(前者主動))。

    1springstruts依賴庫配置

             * 配置struts

                       --拷貝struts類庫和jstl類庫

                       --修改web.xml文件來配置ActionServlet

                       --提供struts-config.xml文件

                       --提供國際化資源文件

             * 配置spring

                       --拷貝spring類庫

                       --提供spring配置文件

                      

    2、在strutsAction中調(diào)用如下代碼取得BeanFactory

            

    BeanFactoryfactory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

    使用listener配置beanfactory,將其初始化交給servlet,使其維持在ServletContext中,節(jié)省資源。(Listener初始化早于ServletWeblogic8除外))

    <context-param>

         <param-name>contextConfigLocation</param-name>

         <param-value>classpath*:applicationContext-*.xml</param-value>

    </context-param>

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

             </listener>

    3、通過BeanFactory取得業(yè)務(wù)對象,調(diào)用業(yè)務(wù)邏輯方法

    補(bǔ)充:(Struts1.x相關(guān)并和Spring集成)

    擴(kuò)展學(xué)習(xí):

    lJbossjar包加載順序(根據(jù)字母),因此可能使得有些包無法加載。

    l使用高級模板創(chuàng)建的jsp文件,由于有

    <%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

    ------------

    <base href="<%=basePath%>" />

             因此,jsp中的目錄都會從根目錄下查找。

    lServlet Listener

    ListenerServlet的監(jiān)聽器,它可以監(jiān)聽客戶端的請求、服務(wù)端的操作等。通過監(jiān)聽器,可以自動激發(fā)一些操作,比如監(jiān)聽在線的用戶的數(shù)量。當(dāng)增加一個HttpSession時,就激發(fā)sessionCreated(HttpSessionEvent se)方法,這樣就可以給在線人數(shù)加1。常用的監(jiān)聽接口有以下幾個:

    ServletContextAttributeListener監(jiān)聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。

    ServletContextListener監(jiān)聽ServletContext。當(dāng)創(chuàng)建ServletContext時,激發(fā)contextInitialized(ServletContextEvent sce)方法;當(dāng)銷毀ServletContext時,激發(fā)contextDestroyed(ServletContextEvent sce)方法。

    HttpSessionListener監(jiān)聽HttpSession的操作。當(dāng)創(chuàng)建一個Session時,激發(fā)session Created(HttpSessionEvent se)方法;當(dāng)銷毀一個Session時,激發(fā)sessionDestroyed (HttpSessionEvent se)方法。

    HttpSessionAttributeListener監(jiān)聽HttpSession中的屬性的操作。當(dāng)在Session增加一個屬性時,激發(fā)attributeAdded(HttpSessionBindingEvent se) 方法;當(dāng)在Session刪除一個屬性時,激發(fā)attributeRemoved(HttpSessionBindingEvent se)方法;當(dāng)在Session屬性被重新設(shè)置時,激發(fā)attributeReplaced(HttpSessionBindingEvent se) 方法。

    第二種集成方案

    原理:將業(yè)務(wù)邏輯對象通過spring注入到Action中,從而避免了在Action類中的直接代碼查詢

    (客戶端請求---->代理action--->取得beanFactory--->getBean(..)創(chuàng)建action示例--->執(zhí)行exctute方法)

    1springstruts依賴庫配置

             * 配置struts

                       --拷貝struts類庫和jstl類庫

                       --修改web.xml文件來配置ActionServlet

                       --提供struts-config.xml文件

                       --提供國際化資源文件

             * 配置spring

                       --拷貝spring類庫

                       --提供spring配置文件

    2、因為Action需要調(diào)用業(yè)務(wù)邏輯方法,所以需要在Action中提供setter方法,讓spring將業(yè)務(wù)邏輯對象注入過來

    3、在struts-config.xml文件中配置Action

           * <action>標(biāo)簽中的type屬性需要修改為

                                org.springframework.web.struts.DelegatingActionProxy

           DelegatingActionProxy是一個Action,主要作用是取得BeanFactory,然后根據(jù)<action>中的path屬性值

           IoC容器中取得本次請求對應(yīng)的Action

          

    4、在spring配置文件中需要定義strutsAction,如:

             <bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">

                       <property name="userManager" ref="userManager"/>

             </bean>

             * 必須使用name屬性,name屬性值必須和struts-config.xml文件中<action>標(biāo)簽的path屬性值一致

             * 必須注入業(yè)務(wù)邏輯對象

             * 建議將scope設(shè)置為prototype,這樣就避免了struts Action的線程安全問題


    Feedback

    # re: Struts1和Spring的集成  回復(fù)  更多評論   

    2011-02-10 17:53 by 何楊
    標(biāo)記一下。

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲精AA在线观看SEE| 免费jjzz在线播放国产| 亚洲国产精品一区| 久久这里只精品国产免费10| 一本久久a久久精品亚洲| 在线毛片片免费观看| 亚洲AV无码国产在丝袜线观看| 中文在线免费视频| 国产亚洲精品美女久久久| 无码免费一区二区三区免费播放| 亚洲一区免费观看| 久久受www免费人成_看片中文| 亚洲国产午夜精品理论片| 免费鲁丝片一级在线观看| 亚洲爆乳无码专区www| 免费一区二区三区四区五区| 中文字幕在线免费观看视频| 久久国产亚洲电影天堂| 曰曰鲁夜夜免费播放视频| 亚洲精品欧美综合四区| mm1313亚洲国产精品美女| 免费网站观看WWW在线观看| 久久亚洲AV无码精品色午夜| 毛片a级毛片免费观看品善网| 色偷偷亚洲男人天堂| 国产午夜亚洲精品国产成人小说| 日本免费污片中国特一级| 国产成人亚洲合集青青草原精品 | 日韩少妇内射免费播放| 国产亚洲AV夜间福利香蕉149| 一级毛片免费毛片一级毛片免费| 亚洲中文无码线在线观看| 国产一区二区三区在线免费| 花蝴蝶免费视频在线观看高清版| 亚洲女人初试黑人巨高清| 亚洲成AV人网址| 亚洲黄色免费网站| 一级黄色免费大片| 亚洲二区在线视频| 国产gv天堂亚洲国产gv刚刚碰| 一二三四在线观看免费高清中文在线观看|