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

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

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

    posts - 30,  comments - 85,  trackbacks - 0

    WebWork 2.1 / 2.2 與 Spring 集成方法總結(jié)

                                                                                                                          作者:高巍

    第一部分:WebWork2.1與Spring集成

    兩種方法:

    法一:先WebWork后Spring(利用webwork2-spring.jar集成)

    該方法的執(zhí)行順序是先WebWork,后Spring。
    即,首先在xwork.xml中找到待執(zhí)行的action,如果該action依賴(lài)其他bean,再到applicationContext.xml中查找被依賴(lài)的bean。

    WebWork2的IoC功能實(shí)現(xiàn)是在xwork.xml中,指定action類(lèi)與其他bean的依賴(lài)關(guān)系。即:
    (1)xwork.xml文件
    <action name="myAction" class="com.ryandaigle.web.actions.MyAction">
    <external-ref name="DAO">myDAO</external-ref>
    <result name="success" type="dispatcher">
    <param name="location">/success.jsp</param>
    </result>
    </action>

    (2)applicationContext.xml文件
    <bean id="myDAO" class="com.ryandaigle.persistence.MyDAO" singleton="true" />

    具體集成步驟如下:

    1. 下載以下文件:
    http://www.ryandaigle.com/pebble/images/webwork2-spring.jar

    2. 配置xwork.xml

    2.1 在xwork.xml中定義action時(shí),采用external-ref來(lái)指定依賴(lài)的spring bean

    <action name="myAction" class="com.foo.Action">
    <external-ref name="someDao">someDao</external-ref>

    <result name="success" type="dispatcher">
    <param name="location">/success.jsp</param>
    </result>
    </action>

    2.2 在<package>中指定外部引用解析器

    <package name="default" extends="webwork-default"
    externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver"/>

    SpringServletContextReferenceResolver作用是在applicationContext.xml中解析外部引用的bean

    2.3 增加一個(gè)攔截器,允許引用作為外部資源進(jìn)行解析
    <interceptors>
    <interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor"/>
    <interceptor-stack name="myDefaultWebStack">
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="reference-resolver"/>
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myDefaultWebStack"/>

    3. 在web.xml中配置Spring與XWork的外部解析器在同一個(gè)Web Context中工作
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
    <listener-class>com.atlassian.xwork.ext.ResolverSetupServletContextListener</listener-class>
    </listener>

    第一個(gè)偵聽(tīng)器是spring必需的,無(wú)論是否與WebWork集成,都要定義該偵聽(tīng)器;第二個(gè)偵聽(tīng)器是外部解析器所需要的,作用是通過(guò)ServletContext來(lái)取出Spring的ApplicationContext,作為WebWork與Spring的“橋梁”。

    4.在applicationContext.xml中定義被引用的bean
    <bean id="myDAO" class="com.ryandaigle.persistence.MyDAO" singleton="true" />

    說(shuō)明:
    如果不使用WebWork2,完全使用Spring,達(dá)到上述效果,在applicationContext.xml中采取類(lèi)似定義:
    <bean id="myAction" class="com.ryandaigle.web.actions.MyAction" singleton="false">
    <property name="DAO">
    <ref bean="myDAO"/>
    </property>
    <bean id="myDAO" class="com.ryandaigle.persistence.MyDAO" singleton="true" />

     

    法二:先Spring后WebWork(利用spring-xwork-integration.jar集成)

    該方法的執(zhí)行順序是先Spring,后WebWork。
    即,首先由Spring負(fù)責(zé)wire所有的依賴(lài)關(guān)系,再由XWork來(lái)執(zhí)行action。

    注意:因?yàn)閄Work為每個(gè)action調(diào)用生成一個(gè)新的類(lèi)實(shí)例,action在Spring的applicationContext.xml中應(yīng)該配置為prototype。

    1. 配置SpringObjectFactory

    (0)下載https://xwork-optional.dev.java.net/files/documents/1475/11992/spring-xwork-integration.jar

    (1) 可以在web.xml配置

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

    <listener>
    <listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
    </listener>

    (2) 或者:在applicationContext.xml配置
    <bean id="springObjectFactory"
    class="com.opensymphony.xwork.spring.SpringObjectFactory"
    init-method="initObjectFactory"/>

    以上兩種方法任選一種即可

    2. 在applicationContext.xml中定義bean
    <bean name="some-action" class="fully.qualified.class.name" singleton="false">
    <property name="someProperty"><ref bean="someOtherBean"/></property>
    </bean>

    3. 在xwork.xml中定義action(注意action的class與bean的id相同)

    <action name="myAction" class="some-action">
    <result name="success">view.jsp</result>
    </action>

    說(shuō)明:
    該方法與WebWork 2.2中的方法基本相同。

     

    第二部分:WebWork2.2與Spring的集成

    Spring是WebWork2.2中唯一支持的IoC容器。

    1 配置webwork.properties文件,指定spring作為webwork的IoC容器
    webwork.objectFactory = spring
    (1)默認(rèn)的autowiring模式是:by name
    即如果applicationContext.xml文件中的bean id與xwork.xml文件中的action name相同,就
    (2)如果要改為其他模式:
    webwork.objectFactory.spring.autoWire = name|type|auto|constructor

    2 配置web.xml文件,啟動(dòng)Spring偵聽(tīng)器
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    3 在WEB-INF目錄下增加applicationContext.xml文件
    例:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans default-autowire="autodetect">
    <bean id="personManager" class="com.acme.PersonManager"/>
    ...
    </beans>

    4 設(shè)置由Spring來(lái)初始化action
    4.1  在Spring的applicationContext.xml文件中配置bean(即action類(lèi))
    4.2  將xwork.xml中的action的class屬性,由class名改為Spring中定義的bean名
    例如:
    (1)applicationContext.xml中,定義bean id是bar
    <beans default-autowire="autodetect">
    <bean id="bar" class="com.my.BarClass" singleton="false"/>
    ...
    </beans>
    (2)xwork.xml中,action的class="bar",而不是通常的類(lèi)名
    <package name="secure" namespace="/secure" extends="default">
    <action name="bar" class="bar">
    <result>bar.ftl</result>
    </action>
    </package>



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=583291

    posted on 2007-04-02 02:26 安文豪 閱讀(1383) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     

    <2007年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(6)

    隨筆檔案(28)

    文章分類(lèi)(3)

    文章檔案(4)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 86472
    • 排名 - 666

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 18级成人毛片免费观看| 免费a级黄色毛片| 国产精品亚洲一区二区三区在线观看 | 亚洲国产精品一区二区久久hs| 亚在线观看免费视频入口| 亚洲一区二区三区免费在线观看| 日本黄页网站免费| 国产午夜精品免费一区二区三区 | 亚洲AV无码AV男人的天堂不卡| 久久久久亚洲AV无码专区桃色| 91香蕉国产线观看免费全集| 亚洲AV性色在线观看| 亚洲人成电影亚洲人成9999网 | 岛国av无码免费无禁网站| 老湿机一区午夜精品免费福利| 亚洲国产精品无码专区影院| 成人免费男女视频网站慢动作| 国产无限免费观看黄网站| 亚洲www在线观看| 亚洲国产精品无码中文字| 国产成人aaa在线视频免费观看 | 国产免费毛不卡片| 国产一区二区三区免费观看在线 | 亚洲网站免费观看| 国产免费黄色无码视频| 亚洲日本中文字幕天天更新| 国产亚洲综合网曝门系列| 暖暖免费高清日本中文| 久久久精品2019免费观看| 日本视频免费观看| 亚洲色www永久网站| 亚洲卡一卡2卡三卡4卡无卡三| 免费在线视频一区| 成年女人免费视频播放77777 | 美女视频黄的免费视频网页| 国产精品亚洲综合一区在线观看| 亚洲国产精品专区| 亚洲午夜精品久久久久久人妖| 亚洲无码日韩精品第一页| 国产免费午夜a无码v视频| 毛片a级毛片免费播放100|