整合 Struts 和 Spring
与 Struts 相似,Spring 可以作为一个 MVC 实现。这两种框架都具有自己的优点和缺点,尽管大部分人同意 Struts 在 MVC 方面仍然是最好的。很多开发团队已经学会在时间紧迫的时候利用 Struts 作为构造高品质软件的基础。Struts 具有如此大的推动力,以至于开发团队宁愿整合 Spring 框架的特性,而不愿意转换成 Spring MVC。没必要进行转换对您来说是一个好消息。Spring 架构允许您将 Struts 作为 Web 框架连接到基于 Spring 的业务和持久层。最后的结果就是现在一切条件都具备了。
在接下来的小窍门中,您将会了解到三种将 Struts MVC 整合到 Spring 框架的方法。我将揭示每种方法的缺陷并且对比它们的优点。 一旦您了解到所有三种方法的作用,我将会向您展示一个令人兴奋的应用程序,这个程序使用的是这三种方法中我最喜欢的一种。
三个小窍门
接下来的每种整合技术(或者窍门)都有自己的优点和特点。我偏爱其中的一种,但是我知道这三种都能够加深您对 Struts 和 Spring 的理解。在处理各种不同情况的时候,这将给您提供一个广阔的选择范围。方法如下:
- 使用 Spring 的
ActionSupport
类整合 Structs
- 使用 Spring 的
DelegatingRequestProcessor
覆盖 Struts 的 RequestProcessor
- 将 Struts
Action
管理委托给 Spring 框架
装载应用程序环境
无论您使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin
为 Struts 的 ActionServlet
装载 Spring 应用程序环境。就像添加任何其他插件一样,简单地向您的 struts-config.xml 文件添加该插件,如下所示:
xml 代码 - <plug-in className=
- "org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property=
- "contextConfigLocation" value="/WEB-INF/beans.xml"/>
- </plug-in>
-
<plug-in classname=" "></plug-in>
<set-property property=" " value="/WEB-INF/beans.xml"></set-property>
|
前面已经提到过,在 下载 部分,您能够找到这三个完全可使用的例子的完整源代码。每个例子都为一个书籍搜索应用程序提供一种不同的 Struts 和 Spring 的整合方法。您可以在这里看到例子的要点,但是您也可以下载应用程序以查看所有的细节。
窍门 1. 使用 Spring 的 ActionSupport
手动创建一个 Spring 环境是一种整合 Struts 和 Spring 的最直观的方式。为了使它变得更简单,Spring 提供了一些帮助。为了方便地获得 Spring 环境,org.springframework.web.struts.ActionSupport
类提供了一个 getWebApplicationContext()
方法。您所做的只是从 Spring 的 ActionSupport
而不是 Struts Action
类扩展您的动作,如清单 1 所示:
清单 1. 使用 ActionSupport 整合 Struts
package ca.nexcel.books.actions;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.springframework.context.ApplicationContext;
import org.springframework.web.struts.ActionSupport;
import ca.nexcel.books.beans.Book;
import ca.nexcel.books.business.BookService;
public class SearchSubmit extends ActionSupport { |(1)
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
DynaActionForm searchForm = (DynaActionForm) form;
String isbn = (String) searchForm.get("isbn");
//the old fashion way
//BookService bookService = new BookServiceImpl();
ApplicationContext ctx =
getWebApplicationContext(); |(2)
BookService bookService =
(BookService) ctx.getBean("bookService"); |(3)
Book book = bookService.read(isbn.trim());
if (null == book) {
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR,new ActionError
("message.notfound"));
saveErrors(request, errors);
return mapping.findForward("failure") ;
}
request.setAttribute("book", book);
return mapping.findForward("success");
}
}
|
让我们快速思考一下这里到底发生了什么。在 (1) 处,我通过从 Spring 的 ActionSupport
类而不是 Struts 的 Action
类进行扩展,创建了一个新的 Action
。在 (2) 处,我使用 getWebApplicationContext()
方法获得一个 ApplicationContext
。为了获得业务服务,我使用在 (2) 处获得的环境在 (3) 处查找一个 Spring bean。
这种技术很简单并且易于理解。不幸的是,它将 Struts 动作与 Spring 框架耦合在一起。如果您想替换掉 Spring,那么您必须重写代码。并且,由于 Struts 动作不在 Spring 的控制之下,所以它不能获得 Spring AOP 的优势。当使用多重独立的 Spring 环境时,这种技术可能有用,但是在大多数情况下,这种方法不如另外两种方法合适。
你可以通过这个链接引用该篇文章:http://pearlkeeper.bokee.com/tb.b?diaryId=15898688
分享到:
相关推荐
Struts技术资料 hibernate技术资料 spring技术资料 ssh整合技术(struts与hibernate整合,struts与spring整合,hibernate与spring整合,struts,hibernate,spring整合)
在"第27讲--Struts与Spring集成方案1(Struts集成Spring)"中,我们主要探讨如何将Struts2与Spring进行整合。集成的主要目的是利用Spring的强大功能来管理Struts2中的Action类,从而实现更灵活的依赖注入和更好的控制...
在"EJB3与Struts与Spring整合开发(SSE)"的场景中,开发者可能将EJB3作为业务逻辑层,处理复杂的业务操作;Struts作为前端控制器,负责用户交互和请求转发;而Spring则作为整个应用的“胶水”,实现各层间的协调和...
以上就是Struts与Spring整合的关键点,整合这两个框架可以使应用程序更易于测试和维护,同时充分利用Spring的强大功能,如依赖注入和事务管理,提高开发效率和应用质量。在实际项目中,需要根据具体需求选择合适的...
用DelegatingRequestProcessor和DelegatingActionProxy两种方法实现struts和spring的整合,不同的地方就在struts-config.xml文件中,当前文件中DelegatingRequestProcessor是注释的。
Struts和Spring是两个在Java Web开发中广泛使用的框架,它们各自解决了一部分问题,但结合起来...总之,Struts与Spring的集成是Java Web开发中的常见实践,它让两个框架的能力相辅相成,为开发者提供了更强大的工具集。
将Struts与Spring整合可以充分利用两者的优点,实现更高效、更灵活的开发。 **Struts框架详解** Struts是Apache软件基金会的一个开源项目,基于MVC设计模式,主要解决了JSP模型2架构中的控制器问题。它通过...
SSH,即Struts2、Hibernate和Spring的组合,是Java Web开发中的一种经典框架集成,用于构建企业级的MVC(Model-View-Controller)应用。这个整合旨在提供一个高效、灵活且可扩展的开发环境,使开发者可以专注于业务...
通过以上步骤,一个基本的Struts、Spring和Hibernate整合的应用就搭建完成了。这个整合的关键在于Struts处理HTTP请求,Spring管理业务对象和依赖,而Hibernate则处理数据库操作。这样的架构可以实现松耦合,便于代码...
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
SSH整合,全称为Struts、Spring和Hibernate的集成,是一种常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个例子中,我们看到的是一个基于SSH的用户注册功能的实现,使用的开发工具是...
**Eclipse Struts与Spring整合详解** 在Java Web开发领域,Struts和Spring都是非常重要的框架,它们分别在MVC模式和依赖注入方面扮演着关键角色。Struts作为一个经典的MVC框架,帮助开发者构建可维护的、结构清晰的...
struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码struts1 spring ibatis整合项目源码
7. ** strutsspring-plugin**:为了简化Struts和Spring的集成,存在strutsspring-plugin这个库,它可以自动将Spring管理的Bean暴露给Struts,减少了手动配置的工作。 8. **测试**:Struts+Spring的集成使得单元测试...
《Struts Hibernate Spring集成开发宝典》选取的实例繁简适中,与实际开发工作紧密结合,内容讲解由浅入深、循序渐进,可以满足不同层次读者的需求。 作者简介 陈天河,具有多年的软件开发经验,从事基于Java的Web...
整合Struts、Spring和Hibernate可以构建出高度模块化的应用,提高开发效率和代码质量。然而,随着Java EE技术的发展,现代Web应用更多地转向Spring Boot、Spring MVC和MyBatis等更现代的解决方案,它们在易用性、...
本文将深入探讨Struts2与Spring2的整合过程及其背后的原理。 首先,Struts2是一个基于MVC设计模式的Web应用框架,它主要负责处理HTTP请求,提供强大的动作(Action)和结果(Result)管理,以及丰富的插件系统。...
struts hibernate spring集成开发宝典光盘源码(一).rar
3. **配置集成**:在Struts2的配置文件中,我们需要声明一个Struts2-Spring插件,它允许Struts2与Spring进行通信。同时,在Spring的配置文件中,需要定义Action类的bean,并配置好相关属性和依赖。 4. **AOP结合**...