Apache Struts 1.xで開発されたWebアプリケーションのSpring Iocコンテナで宣言されたBeanにアクセスする方法を示すチュートリアルです。

このStruts 1.x Springのサンプルをダウンロードする –

Struts-Spring-Hibernate-Example.zip

Springには、Spring Iocコンテナで宣言されたアクセスBeanに対する「Struts固有の」ソリューションが付属しています。

  1. Springのready-make StrutsプラグインをStrutsに登録する

構成ファイル。

  1. あなたのStrutsアクションクラスを変更してSpringの

    ActionSupport

クラス、Struts Actionクラスのサブクラスです。


  1. ActionSupport

    は便利な

    getWebApplicationContext()を提供します

Spring Iocコンテナで宣言されたBeanにアクセスするためのメソッド。

1. Strutsスプリング依存関係

Struts 1.xと統合するには、Springに ”

spring-web.jar

“と ”

spring-struts.jar

“ライブラリが必要です。 SpringのWebサイトまたはMavenからダウンロードできます。

pom.xml

        <!-- Spring framework -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>2.5.6</version>
    </dependency>

        <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>2.5.6</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-struts</artifactId>
        <version>2.0.8</version>
    </dependency>

2. Strutsプラグインを登録する

Struts設定ファイル(struts-config.xml)で、Springのready-make Strutsプラグイン「

ContextLoaderPlugIn

」を登録します。

<struts-config>
    <!-- Spring Struts plugin -->
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        <set-property property="contextConfigLocation"
            value="/WEB-INF/classes/SpringBeans.xml"/>
    </plug-in>
</struts-config>



ContextLoaderPlugIn

“は、StrutsとSpring間のすべての統合作業を処理します。 Springのbean xmlファイルを ”

contextConfigLocation

“プロパティにロードすることができます。

  • SpringBeans.xml **

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!-- Beans Declaration -->
    <import resource="com/mkyong/customer/spring/CustomerBean.xml"/>

</beans>

3. SpringのActionSupport

Struts Actionクラスでは、Spring ”

ActionSupport

“クラスを拡張し、 ”

getWebApplicationContext()

“メソッドを介してSpringのBeanを取得します。

  • CustomerBean.xml **

    <bean id="customerBo" class="com.mkyong.customer.bo.impl.CustomerBoImpl" >
        <property name="customerDao" ref="customerDao"/>
    </bean>

  • Strutsアクション**

package com.mkyong.customer.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.ActionSupport;

import com.mkyong.customer.bo.CustomerBo;
import com.mkyong.customer.model.Customer;

public class ListCustomerAction extends ActionSupport{

  public ActionForward execute(ActionMapping mapping,ActionForm form,
    HttpServletRequest request,HttpServletResponse response)
        throws Exception {

    CustomerBo customerBo =
        (CustomerBo) getWebApplicationContext().getBean("customerBo");

    ...
    return mapping.findForward("success");

  }
}

完了しました。