開発者ドキュメント

Struts 2 + Spring統合の例

それをダウンロードする –

Struts2-Spring-Integration-Example.zip

このチュートリアルでは、Struts 2とSpringの統合について説明します。

1.プロジェクトの構成

ここでは、このチュートリアルのプロジェクトフォルダ構造を示します。



2. Struts 2 Spring Plugin

Struts 2とSpringを統合するには、プロジェクトクラスパスに ”

struts2-spring-plugin-xxx.jar

“ライブラリを含めてください。

        <!-- Struts 2 -->
        <dependency>
                <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.1.8</version>
        </dependency>

    <!-- 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>

    <!-- Struts 2 + Spring plugins -->
    <dependency>
                 <groupId>org.apache.struts</groupId>
             <artifactId>struts2-spring-plugin</artifactId>
             <version>2.1.8</version>
         </dependency>

3.春のリスナー

  • web.xml

    ファイルのSpringリスナー ”

    org.springframework.web.context.ContextLoaderListener ** “を設定します。

  • web.xml **

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app__2__3.dtd" >

<web-app>
  <display-name>Struts 2 Web Application</display-name>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/** </url-pattern>
  </filter-mapping>

  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>

</web-app>

3. Spring Beanの登録

すべてのSpringのBeanを

applicationContext.xml

ファイルに登録すると、Springリスナーはこのxmlファイルを自動的に探します。

  • applicationContext.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">

    <bean id="userBo" class="com.mkyong.user.bo.impl.UserBoImpl"/>

    <bean id="userSpringAction" class="com.mkyong.user.action.UserSpringAction">
        <property name="userBo" ref="userBo"/>
    </bean>

</beans>
  • UserBo.java **

package com.mkyong.user.bo;

public interface UserBo{

    public void printUser();

}
  • UserBoImpl.java **

package com.mkyong.user.bo.impl;

import com.mkyong.user.bo.UserBo;

public class UserBoImpl implements UserBo{

    public void printUser(){
        System.out.println("printUser() is executed...");
    }

}
  • UserSpringAction.java **

package com.mkyong.user.action;

import com.mkyong.user.bo.UserBo;

public class UserSpringAction{

   //DI via Spring
    UserBo userBo;

    public UserBo getUserBo() {
        return userBo;
    }

    public void setUserBo(UserBo userBo) {
        this.userBo = userBo;
    }

    public String execute() throws Exception {

        userBo.printUser();
        return "success";

    }
}

5. Struts.xml

ここにすべての関係を宣言した。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true"/>

    <package name="default" namespace="/" extends="struts-default">

        <action name="userAction"
            class="com.mkyong.user.action.UserAction" >
            <result name="success">pages/user.jsp</result>
        </action>

        <action name="userSpringAction"
            class="userSpringAction" >
            <result name="success">pages/user.jsp</result>
        </action>

    </package>

</struts>

6.デモ

今度は、Struts 2とSpringの統合作業がすべて完了しました。次に、Springの ”

userBo

” Beanにアクセスするための次の使用例を参照してください。

  • ケース1:SpringをStruts 2 Actionクラスとして動作させ、

春の豆。

  • ケース2:Struts 2 ActionクラスのSpringのBeanにアクセスします。

ケース1

この例では、

userSpringAction

はStruts 2 Actionクラスとして動作し、通常のSpringの方法でSpringの

userBo

BeanをDIできます。

…​.//struts.xml
<action name=”userSpringAction”
class=”userSpringAction” >
<result name=”success”>pages/user.jsp</result>
</action>
<bean id=”userSpringAction” class=”com.mkyong.user.action.UserSpringAction”>
<property name=”userBo” ref=”userBo”/>
</bean>

この操作にアクセスするには、次のURLを使用します。

__http://localhost:8080/Struts2Example/userSpringAction__

=== ケース2

デフォルトでは、Springリスナーは "**  Beanの名前を一致させてオートワイヤリングする" ** を有効にします。つまり、自動的に**  setUserBo()** を介してSpringの "**  userBo ** " BeanをUserActionに渡します。以下を参照してください。Struts 2 Action:

Springのautowiring機能は、**  name ** (デフォルト)、**  type ** 、**  auto ** または**  constructor ** に変更することができます。このhttp://struts.apache.org/2.x/docs/spring- plugin.html[Struts 2 Spring Pluginのドキュメント]を参照してください。

**  UserAction.java **

package com.mkyong.user.action;

import com.mkyong.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

//DI via Spring
 UserBo userBo;
public UserBo getUserBo() {
    return userBo;
}
public void setUserBo(UserBo userBo) {
    this.userBo = userBo;
}
public String execute() throws Exception {
userBo.printUser();
return SUCCESS;
    }
}
この操作にアクセスするには、次のURLを使用します。

__http://localhost:8080/Struts2Example/userAction__

**  WebApplicationContextUtils ** また、Springの汎用**  WebApplicationContextUtils ** クラスを使用してSpringのBeanを直接取得できます。

package com.mkyong.user.action;

import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.mkyong.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{

public String execute() throws Exception {
WebApplicationContext context =
    WebApplicationContextUtils.getRequiredWebApplicationContext(
                            ServletActionContext.getServletContext()
                );
UserBo userBo1 = (UserBo)context.getBean("userBo");
userBo1.printUser();
return SUCCESS;
    }
}
本当に長くて退屈な記事ですが、練習用の完全なプロジェクトソースコードをダウンロードしてください。

=== リファレンス

.  http://struts.apache.org/2.x/docs/spring-plugin.html[Struts 2 Spring

プラグインのドキュメント]。リンク://struts/struts-spring-integration-example/[Struts Spring

統合例]

link://tag/integration/[integration]link://タグ/spring/[spring]link://tag/struts2/[struts2]
モバイルバージョンを終了