您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎樣淺析WebWork與Spring集成方法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
WebWork2.1與Spring集成
兩種方法:
法一:先WebWork后Spring(利用webwork2-spring.jar集成)
該方法的執行順序是在WeWork與Spring的集成過程中先WebWork,后Spring。
即,首先在xwork.xml中找到待執行的action,如果該action依賴其他bean,再到applicationContext.xml中查找被依賴的bean。
WebWork2的IoC功能實現是在xwork.xml中,指定action類與其他bean的依賴關系。即:
(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" />
Webwork與Spring集成的具體步驟如下:
1. 下載以下文件:http://www.ryandaigle.com/pebble/images/webwork2-spring.jar
2. 配置xwork.xml
2.1 在xwork.xml中定義action時,采用external-ref來指定依賴的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 name="default" extends="webwork-default" externalReferenceResolver="com.atlassian.xwork. ext.SpringServletContextReferenceResolver"/>
SpringServletContextReferenceResolver作用是在applicationContext.xml中解析外部引用的bean
2.3 增加一個攔截器,允許引用作為外部資源進行解析
<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的外部解析器在同一個Web Context中工作
<!--載入spring配置文件--> <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> <listener> <listener-class>com.atlassian.xwork.ext. ResolverSetupServletContextListener</listener-class> </listener>
***個偵聽器是spring必需的,無論是否與WebWork集成,都要定義該偵聽器;第二個偵聽器是外部解析器所需要的,作用是通過ServletContext來取出Spring的ApplicationContext,作為WebWork與Spring的“橋梁”。
4.applicationContext.xml文件跟xwork.xml文件的存放路徑一下,都在classpath下
在applicationContext.xml中定義被引用的bean
<bean id="myDAO" class="com.ryandaigle. persistence.MyDAO" singleton="true" />
說明:
如果不使用WebWork2,完全使用Spring,達到上述效果,在applicationContext.xml中采取類似定義:
<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集成)
該方法在WebWork與Spring集成中執行的順序是先Spring,后WebWork。即,首先由Spring負責wire所有的依賴關系,再由XWork來執行action。
注意:因為XWork為每個action調用生成一個新的類實例,action在Spring的applicationContext.xml中應該配置為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"/>
WebWork與Spring集成以上兩種方法任選一種即可。
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>
說明:
該方法與WebWork 2.2中的方法基本相同。
第二部分:WebWork2.2與Spring的集成
Spring是WebWork2.2中***支持的IoC容器。
1 配置webwork.properties文件,指定spring作為webwork的IoC容器
webwork.objectFactory = spring
(1)默認的autowiring模式是:by name
即如果applicationContext.xml文件中的bean id與xwork.xml文件中的action name相同,
(2)如果要改為其他模式:
webwork.objectFactory.spring.autoWire = name|type|auto|constructor
2 配置web.xml文件,啟動Spring偵聽器
<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 置由Spring來初始化action
4.1 在Spring的applicationContext.xml文件中配置bean(即action類)
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",而不是通常的類名
<package name="secure" namespace=" /secure" extends="default"> <action name="bar" class="bar"> <result>bar.ftl</result> </action> </package>
以上就是怎樣淺析WebWork與Spring集成方法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。