`
KAXU
  • 浏览: 271588 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

WebWork2.2中结合Spring

阅读更多

WebWork2.2中结合Spring


本文大部分内容来自http://wiki.opensymphony.com/display/WW/Spring,本文主要是把内容翻译过来,并加上一些补充,请以英文版本为准.

在WebWork2.2中,spring已经作为IOC的支持基础,原有的Spring结合的方法已经分别溶入到XWork和WebWork的源码中.

当然原有的组合办法依然有效,有可能一些类改了包名和类名,但是使用方法类似.

在WebWork2.2中,还有一种新的办法来结合Spring.


开启Spring组合

WebWork中开启Spring支持是非常简单的,把最新版本的Spring的jar放到你的classpath中,然后在webwork.properties里面设置如下选项:

Java代码 复制代码
  1. webwork.objectFactory = spring  
		webwork.objectFactory = spring


                此时使用的类是: com.opensymphony.webwork.spring.WebWorkSpringObjectFactory,也可以指定为其他SpringObjectFactory.

这时所有对象都首先来用Spring来创建.如果Spring没有创建这些对象,WebWork会自己创建这些对象. 然后,你需要在web.xml里面设置Spring的listener:

Java代码 复制代码
  1. <listener>   
  2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   
  3. </listener>  
		<listener>
		    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
		</listener>



Spring配置示例

这时,你可以添加一个标准的Spring配置文件:WEB-INF/applicationContext.xml,举例如下:

Java代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
  3. <beans default-autowire="autodetect">   
  4.     <bean id="personManager" class="com.acme.PersonManager"/>   
  5.     ...   
  6. </beans>  
	
		<?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>



使用Spring初始化Action

一般来说,你在xwork.xml里面为每个Action指定类. 这意味着WebWork首先会创建这个Action,然后按照指定的缺省的自动装配策略来设定依赖的属性. 然而,有时你可能想要Spring来完全管理Bean.这是有实际意义的,例如,你如果想对你的Bean使用AOP或者Spring的相关技术,例如Acegi.为了达到这个目的,你仅仅要做的就是在xwork.xml里移除你的WebWork Action的类的属性,然后在applicationContext.xml里面增加一个Bean.

你的applicationContext.xml应该类似这样:

Java代码 复制代码
  1.   
  2. <?xml version="1.0" encoding="UTF-8"?>   
  3. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
  4. <beans default-autowire="autodetect">   
  5.     <bean id="foo" class="com.acme.Foo"/>   
  6.     <bean id="bar" class="com.acme.Foo"/>   
  7. </beans>  
	
	<?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="foo" class="com.acme.Foo"/>
	    <bean id="bar" class="com.acme.Foo"/>
	</beans>



你的xwork.xml文件里面的action应该这样定义:

Java代码 复制代码
  1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">   
  2.   
  3. <xwork>   
  4.     <include file="webwork-default.xml"/>   
  5.   
  6.     <package name="default" extends="webwork-default">   
  7.         <action name="foo" class="foo">   
  8.             <result>foo.ftl</result>   
  9.         </action>   
  10.     </package>   
  11.   
  12.     <package name="secure" namespace="/secure" extends="default">   
  13.         <action name="bar" class="bar">   
  14.             <result>bar.ftl</result>   
  15.         </action>   
  16.     </package>   
  17. </xwork>  
		<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
		
		<xwork>
		    <include file="webwork-default.xml"/>
		
		    <package name="default" extends="webwork-default">
		        <action name="foo" class="foo">
		            <result>foo.ftl</result>
		        </action>
		    </package>
		
		    <package name="secure" namespace="/secure" extends="default">
		        <action name="bar" class="bar">
		            <result>bar.ftl</result>
		        </action>
		    </package>
		</xwork>



记住:这个不是必需的.仅仅当你需要使用Spring的拦截器或者IoC来修饰Action以便覆盖Webwork的缺省行为时,这才是必要的.要记住一点,WebWorkSpring组合会执行标准的IoC,使用你指定的自动装配策略,即使你没有明确第在Spring中映射每个Action.所以通常你不需要做这个,但是知道可以这样做对你是有好处的,如果你需要的话.


和以前版本的区别
其实本质上是一样的,主要区别如下:
可以不配置SpringObjectFactoryListenter,直接在webwork.properties里指定.
webwork.properties里可以指定autoWire策略.


其他

其实通过查看源码可以知道,还有几个其他的类,可以做其他的设置,例如SpringProxyableObjectFactory,SessionContextSpringProxyableObjectFactory等,至于如何使用,那就慢慢研究吧

分享到:
评论

相关推荐

    webWork2.2+spring +SpringMVC组合 例子

    【标题】:“webWork2.2+spring+SpringMVC组合例子”是一个示例项目,展示了如何将三个经典的Java Web框架——WebWork2.2、Spring以及Spring MVC整合在一起,以构建一个完整的Web应用程序。这样的组合可以充分利用各...

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

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Java各种开发框架总结.docx

    WebWork2.2还引入了对AJAX的支持,结合DWR和Dojo框架。 Struts是另一个流行的Java Web开发框架,它基于Servlet和JSP技术,实现了MVC设计模式。Struts通过整合自定义标签和信息资源,简化了开发流程,使得开发者无需...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    struts+spring+ibatis.doc

    “Struts+Spring+ibatis”文档介绍了一种结合Struts MVC框架、Spring框架及ibatis持久层框架的轻量级J2EE开发模式。JpetStore 4.0作为ibatis的最新示例项目,不仅展现了ibatis在数据持久化方面的高效能力,还通过...

    图书管理系统J2EE设计报告书

    Struts2实际上是基于Webwork2.2发展起来的,与早期的Struts1.x在架构上有显著区别,不需直接继承Action类,而是通过Getter和Setter方法处理表单数据。开发者通常会继承ActionSupport类,利用其提供的国际化、验证和...

    java开源框架的集合

    此外,WebWork2.2版本还增加了对AJAX的支持,这主要基于DWR和Dojo这两个框架。 #### Struts —— Java开源Web框架 **Struts** 是一个基于J2EE平台的MVC框架,它整合了Servlet、JSP、自定义标签和信息资源等技术,...

    基于struts+spring+ibatis的轻量级J2EE开发

    尽管近年来出现了一些新的框架如Spring MVC、WebWork等,这些框架在设计上可能更加先进和灵活,但从实际应用角度来看,Struts仍然是一个稳定且成熟的选择。在JPetStore 4.0中,Struts的应用并不局限于传统的固定用法...

    webmvcspring

    ### Spring Web MVC 构架详解 #### 一、引言:Spring 应用框架 当初次接触到 Spring 框架时,人们可能会产生疑问:“这难道又...通过将 Spring 与现有的 Web 框架结合使用,开发者可以获得更加强大和灵活的解决方案。

    Java最著名的开源项目

    在WebWork 2.2版本中,添加了对AJAX技术的支持,这一支持建立在DWR(Direct Web Remoting)和Dojo这两个流行的框架之上。 Struts是一个广泛使用的MVC框架,它将Servlet、JSP、自定义标签和消息资源整合到一个统一的...

    总结Java部分的框架和开源项目.docx

    - **AJAX 支持**:WebWork 2.2 版本引入了对 AJAX 的支持,通过集成 DWR 和 Dojo 等框架实现了这一功能。 **应用场景:** - 构建动态 Web 应用,尤其是那些需要大量交互和数据处理的应用。 - 需要支持多种视图技术...

    基于J2EE平台的可配置权限 系统的设计与实现

    该系统采用了当前较为流行的技术栈:webwork+eXtremeComponents+Spring+Hibernate。这些技术的选择基于以下几点考虑: - **Webwork** 和 **eXtremeComponents** 用于表示层,它们结合了JSTL标签库和自定义标签库,...

    dwr中文文档dwr中文文档dwr中文文档

    - **4.7.2 在JSP中导入脚本**:在WebWork的JSP页面中使用DWR。 **4.8 DWR与Acegi** - Acegi是Spring Security的前身,DWR可以与Acegi结合使用。 - **4.8.1 问题提出**:指出在安全方面可能遇到的问题。 - **4.8.2 ...

    DWR中文文档.pdf

    `SpringCreator`是一个特殊的Creator,它允许DWR从Spring容器中获取bean实例。 - **4.2.3 找到Spring配置文件** 需要在`dwr.xml`中指定Spring配置文件的位置。 - **4.2.4 使用Spring配置DWR** 通过这种方式,...

    最新SSH帮助文档合集(chm格式)

    Struts2是Struts1的升级版,它结合了Struts1和WebWork的优势,提供了更强大的功能和灵活性。Struts2.2.3.1版本包含了许多增强,例如OGNL表达式语言、拦截器(Interceptor)机制和更丰富的插件架构。学习Struts2,你...

    Struts2知识讲解

    Struts2是一个强大的MVC框架,它在Struts1的基础上进行了改进和升级,结合了WebWork的优势,并引入了Spring的AOP(面向切面编程)概念。Struts2的架构源于WebWork,WebWork的最高版本是2.2.5,而Struts2则在其基础上...

Global site tag (gtag.js) - Google Analytics