WebWork与Spring集成方法浅析
创始人
2024-04-14 22:00:23
0

***部分: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文件

  1. com.ryandaigle.web.actions.MyAction">  
  2. myDAO  
  3.  
  4. /success.jsp  
  5.  
  6.  

(2)applicationContext.xml文件

  1. 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

  1. com.foo.Action">  
  2. someDao  
  3.  
  4.  
  5. /success.jsp  
  6.  
  7.  

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

  1. externalReferenceResolver="com.atlassian.xwork.  
  2. ext.SpringServletContextReferenceResolver"/> 

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

2.3 增加一个拦截器,允许引用作为外部资源进行解析

  1.  
  2. class="com.opensymphony.xwork.interceptor.  
  3. ExternalReferencesInterceptor"/>  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  

3. 在web.xml中配置Spring与XWork的外部解析器在同一个Web Context中工作

  1.  
  2.  
  3. contextConfigLocation  
  4.  
  5.  
  6. classpath:/applicationContext.xml  
  7.  
  8.  
  9.  
  10. org.springframework.web.  
  11. context.ContextLoaderListener  
  12.  
  13.  
  14. com.atlassian.xwork.ext.  
  15. ResolverSetupServletContextListener  
  16.  

***个侦听器是spring必需的,无论是否与WebWork集成,都要定义该侦听器;第二个侦听器是外部解析器所需要的,作用是通过ServletContext来取出Spring的ApplicationContext,作为WebWork与Spring的“桥梁”。

4.applicationContext.xml文件跟xwork.xml文件的存放路径一下,都在classpath下

在applicationContext.xml中定义被引用的bean

  1. persistence.MyDAO" singleton="true" /> 

说明:

如果不使用WebWork2,完全使用Spring,达到上述效果,在applicationContext.xml中采取类似定义:

  1. web.actions.MyAction" singleton="false">  
  2.  
  3.  
  4.  
  5. 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配置

  1.  
  2. org.springframework.web.  
  3. context.ContextLoaderListener  
  4.  
  5.  
  6.  
  7. com.opensymphony.xwork.spring.  
  8. SpringObjectFactoryListener  
  9.  
  10.  

(2) 或者:在applicationContext.xml配置

  1. class="com.opensymphony.xwork.spring.  
  2. SpringObjectFactory"  
  3. init-method="initObjectFactory"/> 

WebWork与Spring集成以上两种方法任选一种即可。

2. 在applicationContext.xml中定义bean

  1. qualified.class.name" singleton="false">  
  2.  
  3.  
  4.  
  5.  

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

  1.  
  2. view.jsp  
  3.  
  4.  

说明:

该方法与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侦听器

  1.  
  2. org.springframework.web.  
  3. context.ContextLoaderListener  
  4.  
  5.  

3 在WEB-INF目录下增加applicationContext.xml文件

例:

  1.  
  2. "http://www.springframework.org/dtd/spring-beans.dtd">  
  3.  
  4.  
  5. ...  
  6.  

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

  1.  
  2. singleton="false"/>  
  3. ...  
  4.  

(2)xwork.xml中,action的class="bar",而不是通常的类名

  1. /secure" extends="default">  
  2.  
  3. bar.ftl  
  4.  
  5.  

 

【编辑推荐】

  1. WebWork注入Servlet方法详解
  2. WebWork中返回INPUT的原因
  3. WebWork如何实现文件上传配置过程
  4. 通过WebWork实现HelloWorld
  5. WebWork与Spring+Hibernate的整合

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...