`
csevan
  • 浏览: 60881 次
  • 性别: Icon_minigender_1
  • 来自: 长沙市
文章分类
社区版块
存档分类
最新评论

WebWork 2.1 / 2.2 与 Spring 集成方法总结

阅读更多

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

两种方法:

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

该方法的执行顺序是先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" />

具体集成步骤如下:

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>中指定外部引用解析器

<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中工作
<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中定义被引用的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集成)

该方法的执行顺序是先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"/>

以上两种方法任选一种即可

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>

分享到:
评论

相关推荐

    webx3框架指南PDF教程附学习Demo

    2.2. SpringExt原理 ......................................................................................... 16 2.2.1. XML Schema中的秘密 ...............................................................

    Spring-Reference_zh_CN(Spring中文参考手册)

    13.1.1. 与其他web框架的集成 13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. ...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    Spring in Action(第二版 中文高清版).part2

    15.4 集成Spring Web Flow与其他框架 15.4.1 Jakarts Struts 15.4.2 JavaServer Face 15.5 小结 第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring...

    Spring in Action(第二版 中文高清版).part1

    15.4 集成Spring Web Flow与其他框架 15.4.1 Jakarts Struts 15.4.2 JavaServer Face 15.5 小结 第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring...

    Spring 2.0 开发参考手册

    17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...

    spring in action英文版

     10.4 集成WebWork  10.4.1 WebWork1  10.4.2 XWork/WebWork2  10.5 小结  第11章 保护Spring 应用程序  11.1 Acegi安全系统介绍  11.1.1 安全拦截器  11.1.2 认证管理器  11.1.3 访问...

    Spring中文帮助文档

    2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) ...

    spring chm文档

    17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...

    Spring API

    13.1.1. 与其他MVC实现框架的集成 13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. ...

Global site tag (gtag.js) - Google Analytics