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

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

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

    一葉笑天
    雄關(guān)漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽如血。
    posts - 73,comments - 7,trackbacks - 0
    原文位置:http://downpour.javaeye.com/blog/24239

    論壇中用Struts+Spring的人不少,以前的帖子也有問過Struts+Spring的整合方式。前面的帖子中ReadOnly老大曾經(jīng)提到過Spring2.0新增加的一個(gè)整合方式。今天簡(jiǎn)單把這幾種整合方式小結(jié)一下。

    在這之前,別忘了用一下Google大法,一般早有人會(huì)對(duì)類似的問題做過回答,果然,在ibm developworks上有一篇文章,一下子涵蓋了三種整合方式,有興趣的xdjm可以參考下面的鏈接:http://www-128.ibm.com/developerworks/cn/java/j-sr2.html。

    下面著重談一下Spring2.0新增的一個(gè)整個(gè)方式,我感覺挺不錯(cuò),可以完全將Struts的配置和Spring的配置分離。具體步驟如下:
    1. 編寫Spring的配置文件applicationContext.xml,簡(jiǎn)單起見,僅僅定義一個(gè)Service對(duì)象。
    引用

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

    <bean id="userService" class="com.bearingpoint.gdc.zero.service.impl.UserServiceImpl" />

    </beans>

    這看上去就和普通的Spring配置文件沒有任何分別。
    2. 編寫Struts的配置文件struts-config.xml,注意其中的controller的配置,用到了Spring2.0的新特性。
    引用

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config
    PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"
    >

    <struts-config>

    <action-mappings>

    <action path="/addUser"
    type="com.bearingpoint.gdc.zero.action.user.AddUser"
    scope="request"
    >
    <forward name="success" path="/index.jsp" />
    </action>

    </action-mappings>

    <controller processorClass="org.springframework.web.struts.AutowiringRequestProcessor" />

    </struts-config>


    3. 然后為你的Struts的Action注入你需要的Service
    引用

    private UserService userService;

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    User user = new User();
    userService.addUser(user);
    return mapping.findForward("success");
    }

    /**
    * @param userService
    *            The userService to set.
    */
    public void setUserService(UserService userService) {
    this.userService = userService;
    }

    看上去你好像啥都沒做,而事實(shí)上,注入工作已經(jīng)由AutowiringRequestProcessor自動(dòng)完成。

    4. 編寫web.xml進(jìn)行測(cè)試。
    引用

    ?xml version="1.0" ?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

    <web-app>

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

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

    <servlet>
    <servlet-name>struts</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/classes/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>validate</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>struts</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>


    最后,啟動(dòng)Jetty進(jìn)行測(cè)試,順利運(yùn)行通過!

    看上去如此簡(jiǎn)單,配置起來也沒有什么很特別的地方,只是按照常規(guī)來寫你的Spring和Struts的配置文件就好了。

    不過在這里還是說一下其中的要注意兩個(gè)問題:
    1. 這種autowire的注入支持兩種不同的方式,分別是byName和byType,默認(rèn)是byType。我想這對(duì)于絕大多數(shù)開發(fā)者來說是夠了。
    2. 鑒于在http://www.javaeye.com/topic/15057中所提到的OpenSessionInView模式的失效的問題。我仔細(xì)看了一下Spring的源碼。對(duì)于這種autowire的整合方式,不推薦在struts-config.xml文件中配置ContextLoaderPlugIn,而是采用web.xml中的ContextLoaderListener來加載Spring的初始化配置。否則,你的OpenSessionInView模式可能會(huì)失效。
    posted on 2008-12-22 13:55 一葉笑天 閱讀(854) 評(píng)論(1)  編輯  收藏 所屬分類: 開源技術(shù)

    FeedBack:
    # re: 使用AutowiringRequestProcessor整合struts和Spring2.0
    2014-12-29 15:24 | AUTOCHECK
    1. 這種autowire的注入支持兩種不同的方式,分別是byName和byType,默認(rèn)是byType。我想這對(duì)于絕大多數(shù)開發(fā)者來說是夠了。
    請(qǐng)問怎么配置方式為byName呢?  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 2021在线永久免费视频| 怡红院亚洲怡红院首页| 四虎成人免费网站在线| 国产成人精品日本亚洲网址| 免费A级毛片无码视频| 久久亚洲日韩看片无码| 国产精品亚洲综合网站| 国产特级淫片免费看| 久久久久亚洲AV无码专区体验| 两个人看的www免费| 亚洲天天做日日做天天看| 曰批全过程免费视频播放网站 | 亚洲欧美国产国产综合一区 | 亚洲精品无码久久毛片| 亚洲天天在线日亚洲洲精| 57pao一国产成视频永久免费| 亚洲成av人片在线看片| 在线观看人成视频免费| 美女被羞羞网站免费下载| 免费无码又爽又刺激聊天APP| 亚洲av无码国产精品夜色午夜| 美女被免费网站在线视频免费| 免费大黄网站在线看| 成全视频在线观看免费| 亚洲狠狠狠一区二区三区| 四虎影院免费在线播放| 日韩免费码中文在线观看| 亚洲高清国产拍精品26U| 久久免费看黄a级毛片| 亚洲AV无码成人网站在线观看| 国产一卡二卡四卡免费| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲国产精品无码成人片久久| 足恋玩丝袜脚视频免费网站| 亚洲AV综合永久无码精品天堂| 国产亚洲日韩在线三区| 99久久99久久精品免费看蜜桃| 免费中文字幕视频| 亚洲精品国产手机| 亚洲成av人片一区二区三区| 男人的天堂av亚洲一区2区|