虽然整合方式有好几种,但是整合的最终思路是一样的
1>spring负责action类的创建和管理
2>将spring容器(WebApplicationContext)事先加载到ServletContext中
getServletContext().setAttribute(attrName, wac);
3>struts需要action的时候,从ServletContext中get到WebApplicationContext,然后再getBean,取到action对象
sc.getAttribute(attrName).getBean(beanName, Action.class)
所以ServletContext充当了struts和spring的桥梁或者纽带
WebApplicationContext加载方式
1>以servlet的方式进行加载
web.xml
<servlet> <servlet-name>SpringContextServlet</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet>
ContextLoaderServlet.java
核心代码就一句
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
2>以listener的方式进行加载
web.xml
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
ContextLoaderListener.java
核心代码也是一句
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
3>以struts plugin的方式加载
struts的plugin是以module为单位进行配置的,所以WebApplicationContext可以分module进行设置,如果当前module没有设置的话,那么使用default module配置的WebApplicationContext
struts-config.xml
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/actionContext.xml"/> </plug-in>
ContextLoaderPlugIn.java
public static final String SERVLET_CONTEXT_PREFIX = ContextLoaderPlugIn.class.getName() + ".CONTEXT."; public final String getModulePrefix() { return this.moduleConfig.getPrefix(); } public String getServletContextAttributeName() { return SERVLET_CONTEXT_PREFIX + getModulePrefix(); } String attrName = getServletContextAttributeName(); getServletContext().setAttribute(attrName, wac);
相关推荐
使用Spring的`ActionSupport`是一种非常常见的整合方式,它允许我们利用Spring框架的功能来增强Struts框架。具体实现方法是让自定义的Action继承自`org.springframework.web.struts.ActionSupport`类,这样就可以在...
另一种整合方式是通过自定义RequestProcessor,即继承Spring的`DelegatingRequestProcessor`。在`struts-config.xml`中,用`DelegatingRequestProcessor`替换默认的`RequestProcessor`: ```xml ...
另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖...
完成`WebApplicationContext`的加载后,我们开始进行Struts2和Spring的整合。整合有两种主要方法: 1. **Spring管理Action**: - 在Spring配置文件中定义Action类及其依赖,Action类通常配置为`scope="prototype"`...
SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...
1. **配置Struts-Spring插件**。在Struts2的配置文件(struts.xml)中,需要启用Spring插件并指定Action类的Spring bean名称。 ```xml <constant name="struts.objectFactory" value="org.apache.struts2.spring....
3. **Struts2-Spring插件**:`struts2-spring-plugin-x.xx.jar`,这是实现Struts2与Spring整合的关键组件。 此外,还需要其他第三方库的支持,例如`commons-logging.jar`、`ognl-x.xx.jar`等。 #### 三、配置...
每种整合方式都有其优缺点,开发者需要根据项目需求选择合适的方法。通常,为了降低耦合度和充分利用 Spring 的优点,选择 `DelegatingActionProxy` 的方式更为推荐。在实际开发中,还可以考虑使用 Spring MVC 或者 ...
**SSH整合**主要是指通过一系列的技术手段,将Struts、Spring 和 Hibernate 这三个独立的框架融合到一起,形成一个统一的开发框架,以便于更好地进行Web应用程序的开发工作。 - **Struts**:主要负责表现层(View)...
6. **测试**:"spring-boot-sample-test"提供了单元测试和集成测试的示例,使用Spring Boot的测试支持库,可以方便地进行MockMVC和WebApplicationContext测试。 7. **国际化**:"spring-boot-sample-i18n"解释了...
通过上述三种不同的整合方式,我们可以根据项目的具体需求选择最合适的方法来实现Spring和Struts框架的有效集成。每种方法都有其特点和适用场景,理解它们的工作原理可以帮助我们更好地设计和开发出高效、灵活的Java...
Struts和Spring是Java开发中两个非常重要的框架,...同时,Struts+Spring的组合也常与Hibernate或其他ORM工具结合,形成SSH(Struts-Spring-Hibernate)或SSM(Spring-SpringMVC-Hibernate)这样的经典企业级开发栈。
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...
此外,还需要Struts2的Spring插件,即struts2-spring-plugin-x.xx.jar,它使得Struts2能够识别和利用Spring管理的Bean。 在Web应用的配置文件web.xml中,我们需要设置WebApplicationContext。对于Servlet 2.3及以上...
Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...
它提供了一种组织应用结构的方式,通过ActionForm、Action和Struts-config.xml配置文件来控制应用程序流程。Struts处理用户请求,将这些请求映射到相应的Action,然后Action调用业务逻辑并返回一个结果,该结果可以...
6. **Web应用上下文**:Spring 2.5引入了WebApplicationContext,它是ApplicationContext的子类,专门为Web应用设计。它与Servlet容器紧密集成,提供了一种管理Web应用特定Bean的机制。 7. **国际化**:Spring 2.5...
Struts、Hibernate和Spring是Java开发中非常著名的三大框架,它们各自解决应用程序的不同层次问题,而将它们整合在一起,能够构建出高效、可维护的Web应用程序。本项目是一个基于这三个框架实现的简单登录功能,旨在...
网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...
例如,@ContextConfiguration注解可以用来加载测试所需的Spring配置,而@MockBean或@SpyBean则可以帮助我们创建和配置模拟对象,以隔离被测试代码和外部依赖。 总的来说,Spring Framework 2.5.6与JUnit 4.4以及...