Spring学習(三)Strutsと統合


一、SpringとStrutsフレーム統合
Springは対象の作成を担当し、Strutsはアクションで要求を処理する.このため、二つのフレームの整合効果は、SpringフレームワークにStrutsフレームを作成するアクションオブジェクトを担当させることである.
二、SpringとStrutsの枠組みを統合したハローワールド
1.jarファイルの導入
strutsフレーム:
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar
スプリングフレーム:
commons-logging-1.1.3.jar
spring-beans-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE.jar
スプリング-ウェブ:
spring-web-3.2.5.RELEASE.jar
struts2-spring-plugin-2.3.4.1.jar
2.プロファイル
1)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- struts      -->            
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- spring      -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- src     java  (java       class  )  WEB-INF/classes    -->
        <param-value>/WEB-INF/classes/bean*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>
strutsコアモニターとspring容器初期化及びservlet Contect Listenerを配置します.
2)bean.xml
bean-dao.xml:
<bean id="userDao" class="com.cityu.dao.UserDao"></bean> 
bean-service.xml:
<bean id="userService" class="com.cityu.service.UserService">
        <property name="userDao" ref="userDao"></property>
</bean>
bean-actions.xml
<bean id="userAction" class="com.cityu.action.UserAction">
        <property name="userService" ref="userService"></property>
</bean>
3)struts.xml
<struts>
    <package name="user" extends="struts-default">
        <!-- action   spring   ,  class     userAction bean  ,
             spring IOC          -->
        <action name="user" class="userAction" method="execute">
            <result name = "success">/index.jsp</result>
        </action>
    </package>
</struts>
ここで注意したいのですが、以前はユーザーが訪問する時にstrutsによってオブジェクトを作成しました.ここではspringがあります.オブジェクトを作成するuserActionの仕事をspringに渡すことができます.
3.java実現
public class UserDao {
    public void save(){
        System.out.println("save into DataBase!");
    }
}

public class UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void service(){
        userDao.save();
    }
}

public class UserAction extends ActionSupport{
    private UserService userService;
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String execute(){
        userService.service();
        return SUCCESS;
    }
}
簡単な流れはこのようなものです.ユーザーが要求する時、アクセスaction、actionオブジェクトはspring容器で作成されます.actionがdaoにアクセスする過程で必要な依存対象はすべてspringで作成され、業務方法を実行した後、actionの戻り値からindex.jspページに位置し、ユーザーとインタラクションする.もちろん、その中でstrutsの枠组みのフィルタリングの作用はしばらく多くの体现がなくて、使うのがすべてデフォルトのスクリーンセーバーなためです.