ApplicationContext是Spring的核心,WebApplicationContext继承自ApplicationContext,首先在Web应用中要初始化WebApplicationContext
,即在web.xml中配置:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- OR USE THE CONTEXTLOADERSERVLET INSTEAD OF THE LISTENER
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
然后对于spring与struts组合的部分,据我所知有三种方法:
1、Spring本身也提供了Struts的相关类,主要使用的有org.springframework.web.struts.ActionSupport,我们只要定义BaseAction继承
AtionSupport,让其他Action继承自BaseAction,就是在BaseAction中调用ActionSupport中getWebApplicationContext()的方法取出
WebApplicationContext,进而取出各种Service。
2、让Spring可以反向控制Struts中的action:
用org.springframework.web.struts.ContextLoaderPlugIn,这是一个Struts的Plug,在Struts启动时加载,对于Action,可以像管理Bean一
样来管理,在struts-config.xml中Action的配置变成类似下面的样子
<action attribute="aForm" name="aForm" path="/aAction" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="forward" path="forward.jsp" />
</action>
注意type变成了org.springframework.web.struts.DelegatingActionProxy,之后我们需要建立action-servlet.xml(这里只配置action bean
),action-servlet.xml符合Spring的spring-beans.dtd标准,在里面定义类似下面的
<bean name="/aAction" class="com.web.action.Aaction" singleton="false">
<property name="businessService">
<ref bean="businessService"/>
</property>
</bean>
com.web.action.Aaction是Action的实现类,businessService是需要的业务逻辑,Spring会把businessService注入到Action中,在Action中
只要写businessService的get和set方法就可以了,还有一点,action的bean是singleton="false",即每次新建一个实例,这也解决了Struts
中Action的线程同步问题,具体过程是当用户做“/aAction”的HTTP请求(当然应该是“/aAction.do”),Struts会找到这个Action的对应类
org.springframework.web.struts.DelegatingActionProxy,DelegatingActionProxy是个代理类,它会去找action-servlet.xml文件中
“/aAction”对应的真正实现类,然后把它实例化,同时把需要的业务对象注入,然后执行Action的execute方法。
使用了ContextLoaderPlugIn,在struts-config.xml中变成类似这样配置
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml" />
</plug-in>
3、JPetstore例子中并没有使用此方法,而使用了第三种方法。同样只需要动Action。如下:
public abstract class BaseAction extends Action {
private PetStoreFacade petStore;
public void setServlet(ActionServlet actionServlet) {
super.setServlet(actionServlet);
if (actionServlet != null) {
ServletContext servletContext = actionServlet.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
this.petStore = (PetStoreFacade) wac.getBean("petStore");
}
}
protected PetStoreFacade getPetStore() {
return petStore;
}
}
分享到:
相关推荐
- 利用Spring的测试框架,如`SpringJUnit4ClassRunner`,可以方便地对Spring和Struts集成的应用进行单元测试和集成测试。 在实际项目中,通常还会涉及到安全框架(如Spring Security)和拦截器的配置,以增强应用...
下面我们将详细探讨Spring与Struts集成的相关知识点。 首先,Spring 框架以其强大的DI(Dependency Injection)和AOP(Aspect Oriented Programming)特性而闻名,它可以管理对象的生命周期和依赖关系,使得代码...
**Spring和Struts集成详解** 在Java Web开发中,Spring框架和Struts框架都是不可或缺的组件,它们分别在依赖注入(DI)和模型-视图-控制器(MVC)架构方面展现出强大的功能。Spring提供了全面的后端服务管理,包括...
SSH(Struts + Spring + Hibernate)是经典的 Java EE 开发框架组合,这里我们主要探讨 Spring 和 Struts 的集成应用。 1. **Spring 框架**: - **核心概念**:Spring 提供了一个轻量级的容器,它管理对象的生命...
为了方便大家开发,特意制作了intellij环境下maven项目spring+struts集成空模板。直接导入intellij就可以用,模板下有个简单的小例子。对于学习spring+struts集成、以及希望快速开发的人来说都是不错的资源
以下是一些关于Spring和Struts集成的关键知识点: 1. **依赖注入(DI)与控制反转(IOC)**:Spring通过DI实现对象之间的松耦合,Struts中的Action和其他组件可以通过Spring的Bean工厂获取依赖的对象。 2. **Spring ...
- **Spring MVC 与 Struts2**:尽管Spring本身有MVC框架,但也可以与Struts2集成,利用Struts2的控制器和Action特性,结合Spring的强大功能。 - **事务管理**:Spring 提供的事务管理可以覆盖Struts的事务控制,...
#### 附录:Spring和Struts集成细节 Spring与Struts的集成不仅限于Plug-in方式,还可以通过自定义Action类实现。无论哪种方式,核心目标都是让Spring的IOC容器在Struts环境中运行,管理Struts的Action和其他组件,...
在Java Web开发中,Spring和Struts是两个非常流行的开源框架。Spring是一个全面的企业级应用框架,提供了依赖注入(DI)、面向切面编程(AOP)以及数据访问、事务管理等核心功能。Struts则是一个基于MVC设计模式的...
下面,我们将深入探讨Spring与Struts集成方案二的关键知识点。 首先,集成的主要目的是将Spring的业务逻辑管理与Struts的视图和控制层结合起来。在方案二中,通常会使用Spring作为应用程序的核心框架,负责管理Bean...
- Spring与Struts2集成,Spring可以作为Struts2的Action的依赖注入容器,通过Spring的ApplicationContext获取服务层对象,实现业务逻辑处理。 - Struts2与Hibernate集成,通常在Action中通过SessionFactory获取...
在提供的"spring+struts集成学习笔记和项目源码"中,你将有机会深入理解这些概念,通过实际操作来学习如何将Spring的优秀特性与Struts的高效处理机制结合起来,构建出高效稳定的Web应用。源码分析和实践操作是加深...
以上就是Spring与Struts集成的第二种方式,它允许我们在Struts2的Action中直接使用由Spring管理的Bean,实现了业务逻辑层和控制层的解耦。这种方式相比第一种,即在Struts2的配置文件中直接配置Bean,更符合Spring的...
标题中的"Spring集成struts以及hibernate jar包"指的是在Java Web开发中,将Spring框架与Struts2和Hibernate框架进行整合的过程。这通常是为了构建一个完整的MVC(Model-View-Controller)架构,其中Spring负责依赖...
通过Action类和拦截器,可以实现与Spring的无缝集成,同时也可以利用Spring的缓存功能,将频繁访问的数据存储在Redis中。 3. **Hibernate框架**:Hibernate是Java领域的一个对象关系映射(ORM)框架,它简化了数据库...
集成Spring和Struts2的好处在于,Spring可以帮助管理Struts2的Action和业务逻辑,实现松耦合和更好的测试性。同时,Struts2的MVC模型和丰富的插件系统可以提供优雅的用户界面和交互控制。这样的结合,不仅提升了开发...
在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和业务逻辑处理;而Struts作为MVC架构的先驱者,在构建复杂的...
下面,我们将详细介绍如何进行Jpa、Spring和Struts的集成。 1. 集成JPA环境步骤: JPA是Java标准的ORM(对象关系映射)规范,它提供了一种在Java应用程序中操作数据库的方式。首先,我们需要在项目中引入JPA的依赖...
标题中的“hibernate_spring_struts框架资料”指的是一个关于三大开源Java Web框架——Hibernate、Spring和Struts集成使用的教程或参考资料集合。这三大框架是企业级Java应用开发中的常用工具,它们各自负责不同的...