`

struts和spring的整合-WebApplicationContext的几种加载方式

阅读更多

虽然整合方式有好几种,但是整合的最终思路是一样的

 

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 + struts 整合的三种主要方式

    使用Spring的`ActionSupport`是一种非常常见的整合方式,它允许我们利用Spring框架的功能来增强Struts框架。具体实现方法是让自定义的Action继承自`org.springframework.web.struts.ActionSupport`类,这样就可以在...

    Spring 和 struts 整合的三种方式

    另一种整合方式是通过自定义RequestProcessor,即继承Spring的`DelegatingRequestProcessor`。在`struts-config.xml`中,用`DelegatingRequestProcessor`替换默认的`RequestProcessor`: ```xml ...

    Spring整合Struts

    另一种整合方式是通过继承Spring的ActionSupport类,这使得开发者能够显式地使用getWebApplicationContext()方法获取Spring管理的bean。这种方式更适用于那些需要深度集成Spring特性的场景,比如AOP或更复杂的依赖...

    struts2+spring整合

    完成`WebApplicationContext`的加载后,我们开始进行Struts2和Spring的整合。整合有两种主要方法: 1. **Spring管理Action**: - 在Spring配置文件中定义Action类及其依赖,Action类通常配置为`scope="prototype"`...

    struts+spring+hibernate三大框架整合

    SSH三大框架,即Struts、Spring和Hibernate,是Java Web开发中的常用技术组合,它们各自负责不同的职责:Struts作为MVC模式中的Controller层,处理用户请求并转发到相应的业务逻辑;Spring则作为核心容器,负责依赖...

    struts 整合spring 例子,测试通过

    1. **配置Struts-Spring插件**。在Struts2的配置文件(struts.xml)中,需要启用Spring插件并指定Action类的Spring bean名称。 ```xml &lt;constant name="struts.objectFactory" value="org.apache.struts2.spring....

    struts2整合spring

    3. **Struts2-Spring插件**:`struts2-spring-plugin-x.xx.jar`,这是实现Struts2与Spring整合的关键组件。 此外,还需要其他第三方库的支持,例如`commons-logging.jar`、`ognl-x.xx.jar`等。 #### 三、配置...

    Spring与Struts整合3种方式实例

    每种整合方式都有其优缺点,开发者需要根据项目需求选择合适的方法。通常,为了降低耦合度和充分利用 Spring 的优点,选择 `DelegatingActionProxy` 的方式更为推荐。在实际开发中,还可以考虑使用 Spring MVC 或者 ...

    SSH整合 struts+hibernate+spring

    **SSH整合**主要是指通过一系列的技术手段,将Struts、Spring 和 Hibernate 这三个独立的框架融合到一起,形成一个统一的开发框架,以便于更好地进行Web应用程序的开发工作。 - **Struts**:主要负责表现层(View)...

    spring-boot-samples-master

    6. **测试**:"spring-boot-sample-test"提供了单元测试和集成测试的示例,使用Spring Boot的测试支持库,可以方便地进行MockMVC和WebApplicationContext测试。 7. **国际化**:"spring-boot-sample-i18n"解释了...

    spring 整合 struts 文档

    通过上述三种不同的整合方式,我们可以根据项目的具体需求选择最合适的方法来实现Spring和Struts框架的有效集成。每种方法都有其特点和适用场景,理解它们的工作原理可以帮助我们更好地设计和开发出高效、灵活的Java...

    Java struts+spring工程范例

    Struts和Spring是Java开发中两个非常重要的框架,...同时,Struts+Spring的组合也常与Hibernate或其他ORM工具结合,形成SSH(Struts-Spring-Hibernate)或SSM(Spring-SpringMVC-Hibernate)这样的经典企业级开发栈。

    spring-web-5.3.6 jar包.rar

    这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类, 包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 spring的核心类,提供了核心HTTP...

    spring与struts2整合

    此外,还需要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 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...

    struts+habernate+spring整合实例源代码

    它提供了一种组织应用结构的方式,通过ActionForm、Action和Struts-config.xml配置文件来控制应用程序流程。Struts处理用户请求,将这些请求映射到相应的Action,然后Action调用业务逻辑并返回一个结果,该结果可以...

    Spring2.5-中文参考手册chm.zip

    6. **Web应用上下文**:Spring 2.5引入了WebApplicationContext,它是ApplicationContext的子类,专门为Web应用设计。它与Servlet容器紧密集成,提供了一种管理Web应用特定Bean的机制。 7. **国际化**:Spring 2.5...

    Struts,Hibernate和Spring三个框架整合的经典登陆小程序

    Struts、Hibernate和Spring是Java开发中非常著名的三大框架,它们各自解决应用程序的不同层次问题,而将它们整合在一起,能够构建出高效、可维护的Web应用程序。本项目是一个基于这三个框架实现的简单登录功能,旨在...

    Struts2+Spring3+MyBatis3完整实例

    网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...

    spring-framework-2.5.6 (含junit-4.4.jar、spring-test.jar)

    例如,@ContextConfiguration注解可以用来加载测试所需的Spring配置,而@MockBean或@SpyBean则可以帮助我们创建和配置模拟对象,以隔离被测试代码和外部依赖。 总的来说,Spring Framework 2.5.6与JUnit 4.4以及...

Global site tag (gtag.js) - Google Analytics