`

Struts.整合Spring的三种方法

阅读更多

关键字: struts1

    使用 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

    spring-webmvc-struts.jar对Struts和Spring整合时需要用到的包

    Struts.2.Hibernate.Spring整合开发技术详解.rar

    Struts 2、Hibernate 和 Spring 是Java开发中最流行的三大开源框架,它们的整合使用被称为SSH(Struts2、Spring、Hibernate)集成开发。这三大框架分别解决了Web应用中的不同问题,Struts 2负责表现层,Spring处理...

    org.springframework.web.struts-3.1.0.M2.jar

    《Spring与Struts整合——基于org.springframework.web.struts-3.1.0.M2.jar的实践探索》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,以及丰富的模块支持,成为了广大开发者青睐的框架...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

    Struts2整合Spring.docStruts2整合Spring.doc

    - **type 装配**:如果想根据 Action 类型来注入 Bean,可以在 Struts2 配置文件中指定 `struts.objectFactory.spring.autoWire` 为 `byType`,这样 Struts2 会根据 Action 类的类型去查找 Spring 中相同类型的 ...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    struts2整合spring实现拦截器

    &lt;constant name="struts.spring.actionBeans" value="classpath:spring/applicationContext.xml"/&gt; ``` 步骤三:编写Action和Interceptor Struts2的拦截器是实现业务逻辑和控制逻辑之间解耦的重要工具。我们可以...

    Spring + struts 整合的三种主要方式

    ### Spring与Struts整合的三种主要方式 在Java Web开发领域,Spring框架和Struts框架都是非常重要的技术。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为Java应用提供了轻量级的解决方案。而...

    struts.spring.hibernate整合教程

    在"struts.spring.hibernate整合教程"中,你可能会学到以下关键知识点: 1. **Struts框架**: - **MVC设计模式**:Struts遵循Model-View-Controller(模型-视图-控制器)模式,分离业务逻辑、数据模型与用户界面。...

    整合Spring与Struts的几种方法

    接下来,有三种整合Spring和Struts的方法: 1. **继承Spring的ActionSupport类**:Action直接继承Spring的`ActionSupport`,并通过`ApplicationContext`获取服务。这种方式简单,但存在几个缺点:首先,Action与...

    Struts1+Spring2+Hibernate2整合详细例子

    Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...

    Struts2整合spring的步骤.txt

    ### Struts2整合Spring的步骤 #### 一、概述 在Java Web开发中,Struts2与Spring都是非常重要的框架。Struts2是一个基于MVC模式的Web应用框架,主要用于简化前端展示逻辑;而Spring框架则提供了强大的依赖注入(DI...

    struts.hibernate.spring整合jar包大全

    Struts、Hibernate和Spring是Java开发中非常重要的三个框架,它们分别用于处理MVC(Model-View-Controller)架构、对象关系映射和依赖注入。整合这三个框架可以创建出高效、可维护的企业级应用。下面将详细介绍这三...

    struts2整合spring

    Struts2整合Spring的主要目的是利用Spring的Inversion of Control(IoC)容器管理Struts2中的Action类和其他业务层组件,以实现松耦合和更好的依赖注入。在整合过程中,Struts2会委托Spring来创建和管理Action实例,...

    整合struts.spring.hibernate项目实例

    整合struts.spring.hibernate ,一个完整的项目代码,带说明

    org.springframework.web.struts-sources-3.0.4.RELEASE.jar

    《Spring与Struts整合:深入理解org.springframework.web.struts-sources-3.0.4.RELEASE.jar》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,而Struts则以其优秀的MVC架构模式,共同构建...

    Struts2.5+ Spring5 + Hibernater5.2整合后项目(包含jar包和配置文件)

    5. **整合Spring与Hibernate**:通过SessionFactoryBean创建SessionFactory,配置数据源,将SessionFactory注入到Service层,实现DAO层的事务管理。 6. **案例运行**:在整合完成后,通常会提供一个简单的CRUD...

    整合struts2和spring

    在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...

Global site tag (gtag.js) - Google Analytics