`
hyj_dx
  • 浏览: 101349 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

webwork和spring整合

阅读更多

始终没有搞明白在appfuse中是通过什么方式将webwork和spring整合在一起的;
在webwork的wiki网站中提供了以下几种方案:http://wiki.opensymphony.com/display/WW/WebWork+2+Spring+Integration 

在关于xwork1.x的设想中(W1:Spring Framework Integration)提到过用以下的方式来实现webwork和spring的整合。
在webwork.properties 文件中添加如下配置:

webwork.action.factory=webwork.action.factory.SpringActionFactory


具体操作步骤:

方案1:
其实,在webwork2中(主要是xwork的功能),action类与其它对象的对应关系是在XWork系统的xwork.xml文件完成的,而不是在spring的applicationContext.xml文件中。如果是一个action类调用一个DAO,而不是向在applicationContext.xml一样声明一个Bean:

<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" />

你可以将action的声明放在xwork.xml中,而DAO仍旧在applicationContext.xml完成,这样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>

applicationContext.xml则变成:

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

请注意在xwork.xml的配置中由external-ref来指向一个由Spring声明的对象;但是要想真正让external-ref生效,还需要好几项工作要做,这里只是给大家一个初步的印象。

首先,下载文件http://www.ryandaigle.com/pebble/images/webwork2-spring.jar并添加到环境变量CLASSPATH中(或直接放在web项目的WEB-INF/lib/下);然后对xwork.xml文件进行修改:

<package name="default" extends="webwork-default"
 externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver">

同时在xwork.xml中添加拦截器reference-resolver

<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"/>


最后别忘了在web.xml中添加一个侦听类:

<listener>
 <listener-class>com.atlassian.xwork.ext.ResolverSetupServletContextListener</listener-class>
</listener>

方案2:SpringObjectFactory
配置方法:
第一步.在spring的 applicationContext.xml (根据实际情况决定) 里面定义你的action,例如

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

可以看到,可以使用Spring的特性来给你的action设置属性等,当然也可以使用Spring的拦截器等 (可以使用不一定等于推荐使用)

注意一定是singleton="false",因为xwork的action是这样要求的.

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

                <action name="myAction" class="some-action">
                    <result name="success">view.jsp</result>
                </action>
 
第三步.要使上面的关联生效,还要用我们的SpringObjectFactory来替换Xwork的默认ObjectFactory. 替换的方法有两种供用户选择,一种是将SpringObjectFactoryListener添加到web.xml中,服务器启动时对ObjectFactory重栽,另外一种是添加到Spring的配置文件,当系统加载spring配置文件时重栽;

A:修改web.xml

                        <!-- 必须加在 Spring ContextLoaderListener 的后面 -->
                        <listener>
                          <listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
                        </listener>
 
B. 添加到Spring的配置文件,例如

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

 方案3:

最后一种对SpringObjectFactory进行重载的方法是ActionAutowiringInterceptor,通过这种拦截器的方式可以自动根据定义的匹配策略对Action进行匹配。使用这一方法的好处之一就是不用在spring的配置文件里面去声明action。

对xwork.xml配置:

<interceptors>
  <interceptor name="autowire" class="com.opensymphony.xwork.spring.interceptor.ActionAutowiringInterceptor">
    <param name="autowireStrategy">1</param>
  </interceptor>
  <interceptor-stack name="autowireDefault">
    <interceptor-ref name="autowire"/>
    <interceptor-ref name="defaultStack"/>
  </interceptor-stack>
</interceptors>

其中拦截器匹配策略autowireStrategy 是可选配置项,如果用户没有对此进行定义系统则默认根据名称进行匹配。

最后别忘记在web.xml中添加如下配置:

            <!-- 这个是spring的listener,可以改为你的自定义的spring的Listenter -->
             <listener>
                           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              </listener>

 

分享到:
评论

相关推荐

    webwork+spring整合例子 内带使用说明 以及webwork文档(中文)

    总的来说,这个压缩包提供了一个学习和实践WebWork和Spring整合的绝佳资源。通过研究这个例子,开发者可以深入理解这两种框架如何协同工作,以及如何在实际项目中利用这种整合来提高开发效率和应用质量。

    webwork与spring集成

    WebWork框架与Spring框架的集成便是一个典型示例,它结合了WebWork在MVC架构方面的优势与Spring在依赖注入(DI)和面向切面编程(AOP)方面的能力,为开发者提供了更为灵活和强大的解决方案。本文将深入探讨WebWork...

    Webwork+spring+hibernate集成实例

    在Webwork+Spring+Hibernate集成中,Spring通常作为整体架构的胶水,负责各组件的连接和协调。它可以管理Webwork的Action,通过依赖注入提供所需的Service和DAO。同时,Spring可以配置Hibernate SessionFactory,...

    WebWork.Spring.Hibernate整合开发网络书城

    《WebWork.Spring.Hibernate整合开发网络书城》这个主题涵盖了三个关键的技术框架:WebWork、Spring和Hibernate。这些技术在现代企业级Java应用开发中扮演着至关重要的角色,特别是对于构建复杂的、数据驱动的Web...

    WebWork+Spring.+Hibernate整合开发网络书城代码

    【WebWork+Spring+Hibernate整合开发】是一种常见的Java Web应用程序架构模式,用于构建高效、可扩展的业务系统。WebWork是Action-based MVC框架,Spring是一个全面的企业级应用框架,而Hibernate则是流行的对象关系...

    webwork2.1 spring

    标题"webwork2.1 spring"指的是将WebWork2.1版本与Spring框架进行集成,以实现更好的应用设计和开发。这两个框架的结合使得开发者可以利用WebWork的事件驱动模型和强大的表单验证功能,同时享受到Spring提供的服务和...

    webwork+spring+ibatis很适合初学者的实例

    WebWork、Spring 和 iBATIS 是三个非常重要的Java Web开发框架,它们的组合为初学者提供了丰富的学习资源。WebWork 是一个MVC(Model-View-Controller)框架,Spring 是一个全面的后端开发框架,而 iBATIS 是一个...

    webwork+spring+hibernate整合开发网络书城 第5讲

    webwork+spring+hibernate整合开发网络书城 第5讲

    webwork in spring

    由于提供的压缩包没有包含实际的源码,你可以参考博文链接(https://dlivan.iteye.com/blog/58242)来获取更多关于WebWork和Spring整合的信息。此外,官方文档、在线教程和社区论坛也是学习这两个框架及其整合的重要...

    spring与webwork框架集成

    WebWork2.1 与 Spring 框架的集成是一个常见的技术实践,目的是利用 Spring 提供的依赖注入(DI)和面向切面编程(AOP)能力,以及 WebWork 的优秀动作层管理,来构建更加灵活和解耦的Java Web应用。在集成过程中,...

    webwork+spring+hibernate 开发资料

    WebWork与Spring的整合可以实现更高级的控制反转和依赖注入,使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。Spring可以通过其Action代理来管理和控制WebWork的动作,同时Spring的AOP特性可以用于处理...

    HIBERNATE+WEBWORK+SPRING整合 可运行

    Spring包括数据访问、事务管理、Web应用、测试等多个模块,能很好地与Hibernate和WebWork集成。在本项目中,Spring主要负责管理Bean,协调不同组件间的交互,提供事务管理和数据访问服务。 整合这三者,通常是为了...

    webwork spring hibernate 整合 示例 项目 完整 代码

    总的来说,这个示例项目为学习和理解如何在实际开发中整合WebWork、Spring和Hibernate提供了一个很好的实践平台。通过深入研究和调试这个项目,开发者可以更好地掌握这些框架的协同工作原理,从而提升自己的Java企业...

    搭建WEBWORK+SPRING+HIBERNATE框架

    【搭建WEBWORK+SPRING+HIBERNATE框架】是一个集成三大流行开源框架的过程,用于构建高效、可扩展的企业级Web应用。以下是详细的步骤和知识点: 1. **开发环境配置**: - 使用MyEclipse 5.5.1 GA作为开发工具,它...

    WebWork+Spring+Hibernate整合开发demo

    1. **整合配置**:整合这三个框架需要对各自的配置文件进行调整,例如在Spring的配置文件中声明Hibernate的SessionFactory,以及WebWork的Action和Interceptor。 2. **依赖注入**:Spring会管理Hibernate的数据源、...

    WebWork.Spring.Hibernate整合开发网络书城全系列视屏4

    本资源"WebWork.Spring.Hibernate整合开发网络书城全系列视屏4"提供了针对初学者的教程,通过第六讲的内容帮助用户理解如何将这三个框架集成到一个实际的网络书城项目中。 首先,WebWork是一个轻量级的MVC(模型-...

    WebWork+Spring+Hibernate源码

    总的来说,这个源码项目为初学者提供了一个学习 WebWork、Spring 和 Hibernate 整合的实例,有助于理解它们各自的作用和相互间的协同工作。通过深入研究,你可以提升自己的 Java Web 开发技能,为今后的项目开发打下...

    webwork-spring-hibernate.rar_spring_webwork

    标题中的"webwork-spring-hibernate.rar_spring_webwork"暗示了这个压缩包涉及的是一个集成WebWork、Spring和Hibernate的项目。这三个框架是Java Web开发中的重要组件,分别负责不同的职责:WebWork(或Struts)是...

    webwork+spring+hibernate+freemarker (A)demo_lib

    Webwork、Spring、Hibernate和Freemarker是Java Web开发中常用的四大框架,它们各自负责不同的职责,协同工作可以构建出高效、灵活的企业级应用。在这个"A" demo项目中,它们被整合在一起,提供了完整的MVC(Model-...

    WebWork.Spring.Hibernate整合开发网络书城全系列视屏5

    本资源"WebWork.Spring.Hibernate整合开发网络书城全系列视屏5"是针对这三者集成应用的教程,尤其适合初学者进行学习和实践。 首先,WebWork是一个基于Action的MVC(Model-View-Controller)框架,它简化了Java Web...

Global site tag (gtag.js) - Google Analytics