整合 Struts 和 Spring:三种方式:<o:p></o:p>
1:使用 Spring的ActionSupport
类整合 Structs2:用 Spring 的 DelegatingRequestProcessor
覆盖 Struts 的 RequestProcessor
3:
将 Struts Action 管理委托给 Spring 框架 <o:p></o:p>
无论您使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的 ActionServlet 装载 Spring 应用程序环境。就像添加任何其他插件一样,简单地向您的 struts-config.xml 文件添加该插件,通过加载吧spring的配置文件加载进来:如下所示:<o:p></o:p>
<plug-in className=<o:p></o:p>
"org.springframework.web.struts.ContextLoaderPlugIn"><o:p></o:p>
<set-property property="contextConfigLocation" value="/WEB-INF/beans.xml"/><o:p></o:p>
</plug-in><o:p></o:p>
|
窍门 1. 使用 Spring 的 ActionSupport(将struts和spring耦合在一起了)<o:p></o:p>
org.springframework.web.struts.ActionSupport
类提供了一个 getWebApplicationContext()
方法。您所做的只是从 Spring 的 ActionSupport
而不是 Struts Action
类扩展您的动作,如public class SearchSubmit extends ActionSupport { //下面execute方法里的内容,将struts和spring耦合在一起了<o:p></o:p>
ApplicationContext ctx = getWebApplicationContext(); <o:p></o:p>
BookService bookService = (BookService) ctx.getBean("bookService");<o:p></o:p>
}//不继承ActionSupport;这里换成直接自己通过各种各种ApplicationContext来读取spring的bean定义//文件(这种情况不需要上面的< plug-in>标签也可以)<o:p></o:p>
窍门 2. 覆盖 RequestProcessor<o:p></o:p>
org.springframework.web.struts.DelegatingRequestProcessor
类来覆盖 Struts 的 RequestProcessor
处理程序,<controller processorClass="org.springframework.web.struts. DelegatingRequestProcessor"/>下一步是在我的 Spring 配置文件中注册该动作,<o:p></o:p>
<beans><o:p></o:p>
<bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/><o:p></o:p>
<bean name="/searchSubmit" class="ca.nexcel.books.actions.SearchSubmit"> |(1)<o:p></o:p>
<property name="bookService"><o:p></o:p>
<ref bean="bookService"/><o:p></o:p>
</property><o:p></o:p>
</bean><o:p></o:p>
</beans><o:p></o:p>
注意:在 (1) 处,我使用名称属性注册了一个 bean,以匹配 struts-config 动作映射名称。SearchSubmit
动作揭示了一个 JavaBean 属性,允许 Spring 在运行时填充属性,SearchSubmit类就是Action里面定义了 private BookService bookService的get/set方法.<o:p></o:p>
缺点: 如果您使用一个不同的 RequestProcessor
,如tiles的processor。则需要手动整合 Spring 的 DelegatingRequestProcessor
。<o:p></o:p>
窍门 3. 将动作管理委托给 Spring<o:p></o:p>
将 Strut 动作管理委托给 Spring。您可以通过在 struts-config
动作映射中注册一个代理来实现。代理负责在 Spring 环境中查找 Struts 动作。由于动作在 Spring 的控制之下,所以它可以填充动作的 JavaBean 属性,并为应用诸如 Spring 的 AOP 拦截器之类的特性带来了可能。Action类和上面那种情况的类一样<o:p></o:p>
<action path="/searchSubmit" <o:p></o:p>
type="org.springframework.web.struts.DelegatingActionProxy" |(1)<o:p></o:p>
input="/searchEntry.do"<o:p></o:p>
validate="true"<o:p></o:p>
name="searchForm"><o:p></o:p>
<forward name="success" path="/WEB-INF/pages/detail.jsp"/><o:p></o:p>
<forward name="failure" path="/WEB-INF/pages/search.jsp"/><o:p></o:p>
</action> <o:p></o:p>
是一个典型的 struts-config.xml 文件,只有一个小小的差别。它注册 Spring 代理类的名称,而不是声明动作的类名,如(1)处所示。DelegatingActionProxy 类使用动作映射名称查找 Spring 环境中的动作。这就是我们使用 ContextLoaderPlugIn
声明的环境。<o:p></o:p>
<beans><o:p></o:p>
<bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/><o:p></o:p>
<bean name="/searchSubmit" class="ca.nexcel.books.actions.SearchSubmit"><o:p></o:p>
<property name="bookService"><o:p></o:p>
<ref bean="bookService"/><o:p></o:p>
</property><o:p></o:p>
</bean> <o:p></o:p>
*Spring Bean Name与Struts Action Path相关联,当Struts加载对应的Action时,DelegatingActionProxy就根据传入的path属性,在Spring Context寻找对应bean,并将其实例返回给Struts。<o:p></o:p>
动作委托的优点不止如此。一旦让 Spring 控制您的 Struts
分享到:
相关推荐
### 整合Struts和Spring的关键知识点 #### 1. 控制反转(IoC)设计模式 - **定义**:控制反转(Inversion of Control, IoC)是一种设计模式,它将应用程序的控制权从硬编码的方式转移到由外部组件管理。这种模式的...
需要注意的是,整合Struts和Spring时,还需要在web.xml中配置Spring的DispatcherServlet,以及确保Struts和Spring的相关库已添加到项目类路径中。此外,为了实现事务管理和数据访问,通常还会结合Spring的DataSource...
接下来,我们将深入探讨如何整合Struts和Spring来开发一个登录程序。 首先,让我们了解Struts。Struts是基于Apache软件基金会的ActionServlet,它提供了处理HTTP请求并调用业务逻辑的方法。在Struts中,Action类是...
整合Struts2和Spring主要涉及以下几个关键步骤: 1. **添加依赖**:首先,需要在项目的构建配置文件(如Maven的pom.xml或Gradle的build.gradle)中添加Struts2和Spring的相关依赖库。这通常包括struts2-core、...
在整合Struts和Spring时,我们可以利用Spring的AOP(面向切面编程)来声明性地配置事务边界,确保数据的一致性。 6. **异常处理**:Spring提供了统一的异常处理机制,可以捕获并处理应用程序中抛出的异常,这在...
"用maven整合struts+spring+hibernate"这个主题,就是关于如何将这三大核心框架——Struts、Spring和Hibernate——集成到一个项目中的实践教程。Struts提供了MVC(Model-View-Controller)架构,Spring是全面的后端...
整合Struts和Spring主要有以下步骤: 1. **配置Spring**:创建Spring的配置文件(如`applicationContext.xml`),声明Action类为Spring的bean,设置必要的属性和依赖。 ```xml ``` 2. **使用Spring的...
3. **整合过程**:整合Struts和Spring时,首先需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中声明一个Spring插件,这样Struts会将请求转发给Spring来创建和管理Action。然后在Spring的配置...
通过以上步骤,我们成功地在WebLogic服务器上实现了Struts、Spring和Hibernate的整合,创建了一个Struts Portlet,从而能够在portlet环境下利用这三个框架的强大功能,提高开发效率和代码质量。这个实例不仅涵盖了...
通过整合Struts和Spring,我们可以将用户认证、权限检查等逻辑放在Service层,而Action仅负责接收和转发请求,保持代码的简洁性。同时,Spring可以帮助管理数据库连接和事务,确保登录操作的正确执行。 总的来说,...
用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。
整合Struts和Spring可以将Struts的MVC能力与Spring的强大功能结合起来,实现更高效、可维护的Java Web应用。以下是一些关于Struts和Spring整合的关键知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring...
在整合Struts和Spring的过程中,核心思想是让Spring接管Action的创建和生命周期管理。原本在纯Struts架构中,Action类是由Struts的配置文件(如struts-config.xml)定义并管理的,但在整合后,Action不再直接由...
5. **优点**:整合Struts和Spring可以带来很多好处,如更好的代码组织、更简单的依赖管理、更灵活的事务控制等。通过Spring的AOP支持,可以方便地实现全局异常处理和事务管理。此外,由于业务逻辑和表示层分离,代码...
2. **整合Struts和Spring**:在struts.xml中配置Action时,指定Spring管理的bean,使Action由Spring实例化。 3. **整合Hibernate和Spring**:在applicationContext.xml中配置SessionFactory,并声明User实体类的映射...
通过整合Struts和Spring,开发人员不仅可以利用Spring框架的强大功能来增强Struts应用程序的性能和灵活性,还可以享受到更高级别的模块化和代码重用。随着对这两种框架的深入了解,开发团队可以根据项目需求选择最...
SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...
7. ** strutsspring-plugin**:为了简化Struts和Spring的集成,存在strutsspring-plugin这个库,它可以自动将Spring管理的Bean暴露给Struts,减少了手动配置的工作。 8. **测试**:Struts+Spring的集成使得单元测试...
Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子 Struts+Spring+Hibernet整合例子
SSH整合是指将Struts、Spring和Hibernate这三大Java开源框架集成在一起,以构建高效、松耦合的企业级应用。在Java开发中,SSH框架的整合是常见的技术实践,它能够帮助开发者实现MVC(Model-View-Controller)设计...