使用 Spring 的 ActionSupport 类整合 Structs1.X, 使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor,将 Struts Action 管理委托给 Spring 框架
装载应用环境:
无论您使用哪种技术,都需要使用 Spring 的 ContextLoaderPlugin 为 Struts 的 ActionServlet 装载 Spring 应用程序环境
在struts-config.xml 文件尾处添加该插件:
< plug-in className= "org.springframework.web.struts.ContextLoaderPlugIn">
< set-property property= "contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
< /plug-in>
第一种:使用Spring的ActionSupport
该方法: 简单快捷,但会导致struts和spring耦合在一起,如果要移值struts应用程序要重写代码.
例如:
public class ActionName extends ActionSupport { //继承自actionsupport
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
DynaActionForm searchForm = (DynaActionForm) form;//使用动态的actionForm
String isbn = (String) searchForm.get("isbn");
//the old fashion way
//BookService bookService = new BookServiceImpl();
ApplicationContext ctx = getWebApplicationContext(); //org.springframework.web.struts.ActionSupport 类提
//供了一个 getWebApplicationContext() 方法
BookService bookService =
(BookService) ctx.getBean("bookService"); //查找名为bookService的Spring bean
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");
}
}
第二种:覆盖 RequestProcessor
该方法使用 org.springframework.web.struts.DelegatingRequestProcessor 类来覆盖 Struts 的 RequestProcessor 处理程序,通过
Spring 的 DelegatingRequestProcessor 进行整合,看下面的struts-config.xml文件的主要配置部分:
< form-beans>
< form-bean name="searchForm"
type="org.apache.struts.validator.DynaValidatorForm">
< form-property name="isbn" type="java.lang.String"/>
< /form-bean>
< /form-beans>
< action path="/searchSubmit"
type="com.iwtxokhtd.books.actions.SearchSubmit"
input="/searchEntry.do"
validate="true"
name="searchForm">
< forward name="success" path="/WEB-INF/jsp/detail.jsp"/>
< forward name="failure" path="/WEB-INF/jsp/search.jsp"/>
< /action>
< controller processorClass="org.springframework.web.struts.
DelegatingRequestProcessor"/>
< plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
< set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
< /plug-in>
然后在spring配置文件applicationContext.xml文件中进行bean配置:
< beans>
< bean id="bookService" class="com.iwtxokhtd.books.business.BookServiceImpl"/>
< bean name="/searchSubmit" //一定要与struts-config.xml文件中的action中的path名一样
class="com.iwtxokhtd.books.actions.SearchSubmit"> //指名所在的action
< property name="bookService">//dao
< ref bean="bookService"/>//dao Impl 类
< /property>
< /bean>
< /beans>
此外,一定要在action类中加入 private BookService bookService;并生成相应的getter和setter方法
此方法比第一种要好,但如果您使用一个不同的 RequestProcessor,则需要手动整合 Spring 的 DelegatingRequestProcessor,添加的代码
会造成维护的麻烦并且将来会降低您的应用程序的灵活性。
第三种:将动作管理委托给 Spring
这里列出struts-config.xml中的主要部分:
< action path="/searchSubmit"
type="org.springframework.web.struts.DelegatingActionProxy"
input="/searchEntry.do"
validate="true"
name="searchForm">
< forward name="success" path="/WEB-INF/pages/detail.jsp"/>
< forward name="failure" path="/WEB-INF/pages/search.jsp"/>
< /action>
< plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
< set-property property="contextConfigLocation" value="/WEB-INF/classes/application.xml"/>
< /plug-in>
然后在applicatinContext.xml文件中配置:
< beans>
< bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/>
< bean name="/searchSubmit"
class="com.iwtxokhtd.books.actions.SearchSubmit">
< property name="bookService">//dao
< ref bean="bookService"/>//dao impl
< /property>
< /bean>
< /beans>
此方法是三种方法中最好的
相关推荐
spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包
Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大开源框架,它们的整合使用被称为SSH(Struts2、Spring、Hibernate)集成开发。这三大框架分别解决了Web应用中的不同问题,Struts 2负责表现层,Spring处理...
《Spring与Struts整合——基于org.springframework.web.struts-3.1.0.M2.jar的实践探索》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,以及丰富的模块支持,成为了广大开发者青睐的框架...
Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...
- **type 装配**:如果想根据 Action 类型来注入 Bean,可以在 Struts2 配置文件中指定 `struts.objectFactory.spring.autoWire` 为 `byType`,这样 Struts2 会根据 Action 类的类型去查找 Spring 中相同类型的 ...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
<constant name="struts.spring.actionBeans" value="classpath:spring/applicationContext.xml"/> ``` 步骤三:编写Action和Interceptor Struts2的拦截器是实现业务逻辑和控制逻辑之间解耦的重要工具。我们可以...
### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...
在"struts.spring.hibernate整合教程"中,你可能会学到以下关键知识点: 1. **Struts框架**: - **MVC设计模式**:Struts遵循Model-View-Controller(模型-视图-控制器)模式,分离业务逻辑、数据模型与用户界面。...
接下来,有三种整合Spring和Struts的方法: 1. **继承Spring的ActionSupport类**:Action直接继承Spring的`ActionSupport`,并通过`ApplicationContext`获取服务。这种方式简单,但存在几个缺点:首先,Action与...
Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...
### Struts2整合Spring的步骤 #### 一、概述 在Java Web开发中,Struts2与Spring都是非常重要的框架。Struts2是一个基于MVC模式的Web应用框架,主要用于简化前端展示逻辑;而Spring框架则提供了强大的依赖注入(DI...
Struts、Hibernate和Spring是Java开发中非常重要的三个框架,它们分别用于处理MVC(Model-View-Controller)架构、对象关系映射和依赖注入。整合这三个框架可以创建出高效、可维护的企业级应用。下面将详细介绍这三...
Struts2整合Spring的主要目的是利用Spring的Inversion of Control(IoC)容器管理Struts2中的Action类和其他业务层组件,以实现松耦合和更好的依赖注入。在整合过程中,Struts2会委托Spring来创建和管理Action实例,...
整合struts.spring.hibernate ,一个完整的项目代码,带说明
《Spring与Struts整合:深入理解org.springframework.web.struts-sources-3.0.4.RELEASE.jar》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,而Struts则以其优秀的MVC架构模式,共同构建...
5. **整合Spring与Hibernate**:通过SessionFactoryBean创建SessionFactory,配置数据源,将SessionFactory注入到Service层,实现DAO层的事务管理。 6. **案例运行**:在整合完成后,通常会提供一个简单的CRUD...
在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...