使用 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>
此方法是三种方法中最好的
分享到:
相关推荐
博文链接:https://qqwyy.iteye.com/blog/181991
Struts2、Hibernate和Spring是Java企业级开发中常用的三个框架,它们的整合极大地提高了开发效率和代码的可维护性。Struts2作为MVC框架,负责处理HTTP请求和视图展示;Hibernate作为ORM(对象关系映射)框架,简化了...
SSH框架是Java开发中常用的三大开源框架Struts2、Hibernate和Spring的组合,它们各自负责应用程序的不同层面,共同构建了一个高效、灵活的企业级应用开发环境。这个SSH整合jar包是针对Struts2.3.16.1、Hibernate...
Struts2.3.16.1+Hibernate3.6.10+Spring3.2.8整合 能够运行,没有任何问题 另外附带applicationContext.xml、struts.xml、hibernate.cfg.xml
Spring 处理 Struts 中 Action 类的依赖关系主要有三种方法: 1. **使用 `DelegatingRequestProcessor`**:在 `struts-config.xml` 中设置 `processorClass`,将 Action 请求处理委托给 Spring。在 Spring 配置文件...
spring和struts2.x的整合篇spring和struts2.x的整合篇
Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大开源框架,它们的整合使用被称为SSH(Struts2、Spring、Hibernate)集成开发。这三大框架分别解决了Web应用中的不同问题,Struts 2负责表现层,Spring处理...
整合这三个框架,开发者可以构建出松耦合、模块化的应用程序,其中Struts 2处理HTTP请求和视图展现,Spring管理业务逻辑和服务,Hibernate负责数据持久化。这样的架构使得代码更易于维护和测试,同时也提高了开发...
### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...
《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...
接下来,有三种整合Spring和Struts的方法: 1. **继承Spring的ActionSupport类**:Action直接继承Spring的`ActionSupport`,并通过`ApplicationContext`获取服务。这种方式简单,但存在几个缺点:首先,Action与...
Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...
3. 集成Spring:配置spring.xml,声明Bean,包括Action、DAO、Service等,并配置数据源、事务管理器。 4. 配置Struts2-Spring插件:使Struts2能够识别Spring管理的Bean。 5. 编写业务逻辑:在Service层实现业务处理...
Struts2.3.4.1、Spring3.1.2和Hibernate4.1.6是Java Web开发中三大主流框架的特定版本,它们的整合是企业级应用开发中的常见实践,以实现模型-视图-控制器(MVC)架构。这个整合包是为了简化开发者的工作,集成了这...
Struts2、Hibernate3.2和Spring2.0是Java Web开发中三个非常重要的框架,它们的整合在企业级应用中十分常见,旨在提供更高效、灵活和可维护的解决方案。下面将详细介绍这三个框架以及它们整合的核心概念和知识点。 ...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛,能够实现MVC模式,提供业务逻辑管理以及持久化数据处理。在这个整合项目中,我们看到的"struts2.3.15.3-spring3.1.0-hibernate4.0.0"是...
SSH(Struts2、Spring、Hibernate)整合是Java企业级应用开发中常见的一种技术栈,能够提供高效、灵活且可扩展的解决方案。 Struts2是基于MVC设计模式的开源Web框架,用于处理HTTP请求并控制应用程序的行为。它提供...