国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
webwork2 + spring 結(jié)合的幾種方法的小結(jié)
webwork2 + spring 結(jié)合的幾種方法的小結(jié)

參考:
http://wiki.opensymphony.com/display/WW/WebWork+2+Spring+Integration
http://forum.javaeye.com/viewtopic.php?t=8509
http://forum.javaeye.com/viewtopic.php?t=9939

下載:
http://xwork-optional.dev.java.net/


昨天使用webwork和spring,使用的是SpringObjectFactory方法,突然發(fā)現(xiàn)validator沒發(fā)生作用,折騰半天,
換成external-ref的方法,可以了.但是覺得external-ref的方法太麻煩了.
就是去http://xwork-optional.dev.java.net/下載了一下最新的源碼,換回SpringObjectFactory的方式,發(fā)現(xiàn)問題解決了(重載getClassInstance解決了這個(gè)問題).

于是仔細(xì)研究了一下幾種組合的方法,根據(jù)前面參考中的文章,整理了一下.

看了xwork-optional的源碼,發(fā)現(xiàn)其實(shí)三種方法的源碼都包含在這里了,當(dāng)然也包括external-ref這種方法的源碼,只是換了包名和文件名,但是源碼基本沒變.你可以仔細(xì)看看.

1.External-Ref

這種方法看起來比較煩瑣,可能現(xiàn)在都改用第3種方法了.

第一步:在web.xml里面增加一個(gè)listener,如下

java代碼: 

                <listener>
                        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                </listener>
               
                <listener>
                        <listener-class>com.opensymphony.xwork.spring.SpringExternalReferenceResolverSetupListener</listener-class>
                </listener>



第二步:在Spring里面配置類似Dao之類的bean,例如

java代碼: 

                <bean id="myDAO" class="com.ryandaigle.persistence.MyDAO" singleton="true" />



第三步:配置XWork.xml,例如

java代碼: 

                <package name="default" extends="webwork-default"
                        externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver">               
                        <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"/>
                       
                        <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>
               
                </package>
       






2.SpringObjectFactory
我一直用這種方法,因?yàn)橐郧坝X得是xwork本身提供的方法,升級(jí)有保障.

配置方法:
第一步.在spring的 applicationContext.xml (根據(jù)實(shí)際情況決定) 里面定義你的action,例如

java代碼: 

                <bean name="some-action" class="fully.qualified.class.name" singleton="false">
                    <property name="someProperty"><ref bean="someOtherBean"/></property>
                </bean>
               



可以看到,可以使用Spring的特性來給你的action設(shè)置屬性等,當(dāng)然也可以使用Spring的攔截器等 (可以使用不一定等于推薦使用)

注意一定是singleton="false",因?yàn)閤work的action是這樣要求的.

第二步.在xwork.xml里定義你的action定義

java代碼: 

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



第三步.要使上面的關(guān)聯(lián)生效,還要用我們的SpringObjectFactory來替換Xwork的默認(rèn)ObjectFactory.
最新的SpringObjectFactory里面,有兩種方法,其中我覺得A方法更直觀一些.

A:修改web.xml

java代碼: 

                            <!-- 這個(gè)是spring的listener,可以改為你的自定義的spring的Listenter -->
                        <listener>
                                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                        </listener>
                       
               
                        <!-- 這個(gè)必須在 Spring ContextLoaderListener 的后面 -->
                        <listener>
                          <listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
                        </listener>



B.在spring的applicationContext.xml (根據(jù)實(shí)際情況決定)里面定義一個(gè)bean,例如

java代碼: 

                    <bean id="spring-object-factory" class="com.opensymphony.xwork.spring.SpringObjectFactory"
                            init-method="initObjectFactory"/>



這樣Spring會(huì)自動(dòng)調(diào)用initObjectFactory方法來替換Xwork的默認(rèn)ObjectFactory



3.ActionAutowiringInterceptor
這個(gè)方法是最近出現(xiàn)的,可能是最簡潔的方法,但是不知道性能上有沒有問題,我覺得jdk1.4以后應(yīng)該沒有任何問題吧,至于實(shí)際效果你的自己測試一下.

第一步:配置web.xml
java代碼: 

                            <!-- 這個(gè)是spring的listener,可以改為你的自定義的spring的Listenter -->
                        <listener>
                                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                        </listener>
       


第二步配置xwork.xml里面的攔截器

java代碼: 


                <interceptors>
                  <interceptor name="autowire" class="com.opensymphony.xwork.spring.interceptor.ActionAutowiringInterceptor">
                    <param name="autowireStrategy">@org.springframework.beans.factory.config.AutowireCapableBeanFactory@AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE</param>
                  </interceptor>
                  <interceptor-stack name="autowireDefault">
                    <interceptor-ref="autowire" />
                    <interceptor-ref="defaultStack" />
                  </interceptor-stack>
                </interceptors>


你的攔截器里都要包含autowire,例如這個(gè)autowireDefault就相當(dāng)于以前的默認(rèn)的攔截器了.
其中的攔截器策略可以配置,上面配置的是根據(jù)類型,如果不配置,默認(rèn)是根據(jù)名字.

一共有四種策略:
AUTOWIRE_CONSTRUCTOR
AUTOWIRE_BY_TYPE
AUTOWIRE_BY_NAME
AUTOWIRE_AUTODETECT


這種方法執(zhí)行原理就是查找你的action的所有字段,如果和Spring的定義bean有相同的,就自動(dòng)設(shè)置.

假設(shè)你的Spring的applicationContext.xml里面有這樣一個(gè)定義:

java代碼: 


            <bean id="userManager" class="com.test.UserManager" />



如果你在xwork.xml 里面定義的某個(gè)action有一個(gè)字段叫userManager,那么在運(yùn)行時(shí)刻就會(huì)自動(dòng)被設(shè)置為Spring的配置文件里定義的Bean.
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Other Spring Integration - WebWork - Confluence
spring定時(shí)任務(wù)+線池程實(shí)現(xiàn)
Spring的任務(wù)調(diào)度服務(wù)實(shí)例講解
spring mvc攔截器和<mvc:annotation
使用Spring hibernate no session or session was closed
如何在SpringMVC中獲取request對(duì)象
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服