`
yufenfei
  • 浏览: 801126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts1.整合Spring的三种方法

阅读更多

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

此方法是三种方法中最好的

 

分享到:
评论

相关推荐

    spring2.0与struts1.x 整合三种方法!

    博文链接:https://qqwyy.iteye.com/blog/181991

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

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

    Struts2.X+Hibernate3.X+Spring2.5 整合

    Struts2、Hibernate和Spring是Java企业级开发中常用的三个框架,它们的整合极大地提高了开发效率和代码的可维护性。Struts2作为MVC框架,负责处理HTTP请求和视图展示;Hibernate作为ORM(对象关系映射)框架,简化了...

    ssh Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合jar包

    SSH框架是Java开发中常用的三大开源框架Struts2、Hibernate和Spring的组合,它们各自负责应用程序的不同层面,共同构建了一个高效、灵活的企业级应用开发环境。这个SSH整合jar包是针对Struts2.3.16.1、Hibernate...

    Struts2.3.16.1+Hibernate3.6.10+Spring3.2.8整合

    Struts2.3.16.1+Hibernate3.6.10+Spring3.2.8整合 能够运行,没有任何问题 另外附带applicationContext.xml、struts.xml、hibernate.cfg.xml

    spring,struts1.x ,hibernate整合

    Spring 处理 Struts 中 Action 类的依赖关系主要有三种方法: 1. **使用 `DelegatingRequestProcessor`**:在 `struts-config.xml` 中设置 `processorClass`,将 Action 请求处理委托给 Spring。在 Spring 配置文件...

    spring和struts2.x的整合篇

    spring和struts2.x的整合篇spring和struts2.x的整合篇

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

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

    Struts1.x+Spring+Hibernate开发实例

    这个"Struts1.x+Spring+Hibernate开发实例"是一个综合性的学习资料,旨在帮助开发者理解如何将这三个框架整合在一起,构建一个完整的Web应用程序。 Struts1.x是Apache软件基金会的开源MVC(Model-View-Controller)...

    SSH之最新简单整合,Struts-2.5.10.1+Spring 4.3.8+Hibernate5.2.10

    整合这三个框架,开发者可以构建出松耦合、模块化的应用程序,其中Struts 2处理HTTP请求和视图展现,Spring管理业务逻辑和服务,Hibernate负责数据持久化。这样的架构使得代码更易于维护和测试,同时也提高了开发...

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

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

    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整合Spring.docStruts2整合Spring.doc

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

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

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

    整合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.x hibernate spring 整合

    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整合包

    Struts2.3.4.1、Spring3.1.2和Hibernate4.1.6是Java Web开发中三大主流框架的特定版本,它们的整合是企业级应用开发中的常见实践,以实现模型-视图-控制器(MVC)架构。这个整合包是为了简化开发者的工作,集成了这...

Global site tag (gtag.js) - Google Analytics