溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣淺析WebWork與Spring集成方法

發(fā)布時間:2021-10-27 09:41:59 來源:億速云 閱讀:119 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關(guān)怎樣淺析WebWork與Spring集成方法,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

WebWork2.1與Spring集成

兩種方法:

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

該方法的執(zhí)行順序是在WeWork與Spring的集成過程中先WebWork,后Spring。

即,首先在xwork.xml中找到待執(zhí)行的action,如果該action依賴其他bean,再到applicationContext.xml中查找被依賴的bean。

WebWork2的IoC功能實現(xiàn)是在xwork.xml中,指定action類與其他bean的依賴關(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" />

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 增加一個攔截器,允許引用作為外部資源進(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的外部解析器在同一個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,達(dá)到上述效果,在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集成中執(zhí)行的順序是先Spring,后WebWork。即,首先由Spring負(fù)責(zé)wire所有的依賴關(guān)系,再由XWork來執(zhí)行action。

注意:因為XWork為每個action調(diào)用生成一個新的類實例,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"/>

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)默認(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文件,啟動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集成方法,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI