This is a cache of http://dbflute.seasar.org/maven/plugin/ja/sastruts.html. It is a snapshot of the page at 2024-03-19T01:01:42.669+0000.
SAStruts での利用

SAStruts での利用

Maven を利用して SAStruts のプロジェ̊f;トをf5c;成して、DBflute Maven Plugin を用い̅f;開発の流れを説明します。

利用する前に(事前準備)

ここでの説明を進める上で、Maven 2 ま̅ff; 3 のイ0f3;スト0fc;ルをしてお̄f;fc5;要があります。

SAStruts プロジェ̊f;トのf5c;成

SAStruts で̆f; Maven Archetype を提f9b;しています。 Archetype を用いることで、mvn コマ0f3;ドを利用して、SAStruts のプロジェ̊f;トをf5c;成することができます。 詳し̄ff;、SAStruts の Maven Archetypeを参照して̄f;ださい。

プロジェ̊f;トのf5c;成̆f; archetype:generate ゴ0fc;ルをֹf;行します。 ̅f;とえば、以下のようにֹf;行します。

$ mvn archetype:generate -DarchetypeRepository=http://maven.seasar.org/maven2/ \
    -DarchetypeGroupId=org.seasar.sastruts \
    -DarchetypeArtifactId=sa-struts-archetype -DarchetypeVersion=1.0.4-sp9.1 \
    -DgroupId=org.example -DartifactId=sample -Dversion=1.0.0-SNAPSHOT \
    -Duse-dbflute=true

ֹf;行すると、確認を求める Y が表示されるのでパラメ0fc;̋f;がՔf;題なければ Y を入力します。 BUILD SUCCESS になると、artifactId で指定し̅f;ディレ̊f;トリにプロジェ̊f;トがݑf;成されます。

$ cd sample/
$ find . -type f
./pom.xml
./src/main/java/org/example/action/IndexAction.java
./src/main/webapp/WEB-INf/web.xml
./src/main/webapp/WEB-INf/view/index.jsp
./src/main/webapp/WEB-INf/view/common/footer.jsp
./src/main/webapp/WEB-INf/view/common/header.jsp
./src/main/webapp/WEB-INf/view/common/menu.jsp
./src/main/webapp/WEB-INf/view/common/common.jsp
./src/main/webapp/WEB-INf/view/common/layout.jsp
./src/main/webapp/WEB-INf/struts-config.xml
./src/main/webapp/WEB-INf/validator-rules.xml
./src/main/resources/s2container.dicon
./src/main/resources/env.txt
./src/main/resources/customizer.dicon
./src/main/resources/application.properties
./src/main/resources/application_ja.properties
./src/main/resources/s2jdbc.dicon
./src/main/resources/jdbc.dicon
./src/main/resources/app.dicon
./src/main/resources/env_ut.txt
./src/main/resources/creator.dicon
./src/main/resources/convention.dicon
./src/main/resources/log4j.properties
./.settings/net.sf.amateras.sastruts.prefs
./.tomcatplugin
./.amateras

fc5;要にfdc;じて、pom.xml を編集して̄f;ださい。

mvn eclipse:eclipse のֹf;行

Eclipse で読̇f;fbc;めるようにします。

$ mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

ֹf;行することにより、src/main/webapp/WEB-INf/lib/ がff4;新され、fc5;要な jar ファイルが配f6e;されます。 Eclipse でプロジェ̊f;トとしてイ0f3;ポ0fc;トして̄f;ださい。 プロジェ̊f;トにエラ0fc;などが表示される場合̆f;、プロジェ̊f;トをリフレッシュし̅f;f8c;にプロジェ̊f;トをビルドして̄f;ださい。(自動ビルドが設定されていれば̊f;リ0fc;0f3;するとビルドされます)

デ0fc;̋f;ベ0fc;スのf5c;成

今回̆f; H2 を利用します。 別なデ0fc;̋f;ベ0fc;スを利用する場合̆f;、この部分をスキップして̄f;ださい。

$ mkdir src/main/webapp/WEB-INf/db
$ cd src/main/webapp/WEB-INf/db
$ java -jar ../lib/h2-1.3.168.jar 

ブラウザが開き、http://localhost:8082/ が表示されます。 表示されない場合̆f;、その URL を表示して̄f;ださい。

JDBC URL を jdbc:h2:sample を入力して、H2 のデ0fc;̋f;ベ0fc;スに接続します。 ドライバ̊f;ラス̆f; org.h2.Driver、ユ0fc;ザ名̆f;sa、パス̎f;0fc;ド̆f;空欄のデフォルト値でՔf;題ありません。 接続ボ̋f;0f3;を押下して、SQLの入力画面を表示します。 今回̆f;以下の単純なテ0fc;ブルをf5c;成します。

CREATE TABLE TEST_TABLE (
    ID    BIGINT NOT NULL IDENTITY PRIMARY KEY,
    NAME  VARCHAR(255),
    VALUE INT
);

上記を入力して、ֹf;行ボ̋f;0f3;を押下します。 エラ0fc;が表示されていないことを確認し、TEST_TABLEが左側に一覧されていることも確認します。 テ0fc;ブルがf5c;成でき̅f;ら、H2 を終了します。 左上の切断アイコ0f3;を押下するとデ0fc;̋f;ベ0fc;スの接続が切断されます。 ブラウザを閉じても H2 ̆f;終了しないので、̋f;ス̊f;トレイにあるアイコ0f3;から終了を選択して̄f;ださい(EXITメニュ0fc;を選択します)。

プロジェ̊f;トのトップディレ̊f;トリに戻ります。

$ cd ../../../../../

DBflute のダウ0f3;ロ0fc;ド

mvn dbflute:download をֹf;行して、DBflute のダウ0f3;ロ0fc;ドします。 DBflute のバ0fc;ジョ0f3;̆f; pom.xml に記ff0;し̅f; dbfluteVersion になります。

$ mvn dbflute:download

mydbflute/dbflute-[バ0fc;ジョ0f3;] がf5c;成され、そこに DBflute が展開されます。

0.9.4.1 以前のバ0fc;ジョ0f3;を利用していて、Unix |fb; OS を利用している場合̆f;、ant のֹf;行権を設定するfc5;要があります。

chmod +x mydbflute/dbflute-[バ0fc;ジョ0f3;]/ant/bin/ant

DBflute ̊f;ライア0f3;トのݑf;成

mvn dbflute:create-client をֹf;行して、DBflute ̊f;ライア0f3;トをݑf;成します。 ֹf;行すると、mydbflute/dbflute-[バ0fc;ジョ0f3;]/etc/client-template/dbflute_dfclient.zip を dbflute_sample ディレ̊f;トリに展開して、pom.xml に記ff0;し̅f;パラメ0fc;̋f;を DBflute ̊f;ライア0f3;トに自動で反映します。

$ mvn dbflute:create-client

スキ0fc;マ情報の取f97;

mvn dbflute:jdbc をֹf;行して、デ0fc;̋f;ベ0fc;スのスキ0fc;マ情報を取f97;します。 ֹf;行すると、dbflute ディレ̊f;トリの jdbc.[sh|bat] がֹf;行されます。

$ mvn dbflute:jdbc

今回̆f;、デ0fc;̋f;ベ0fc;スのf5c;成の手順でݑf;成し̅f; H2 デ0fc;̋f;ベ0fc;スを参照して、DBflute がֹf;行されます。 [fe;象の DBflute の設定ファイル̆f; dbflute_sample/dfprop/databaseInfoMap.dfprop になります。

̊f;ラスファイルのݑf;成

mvn dbflute:generate をֹf;行して、デ0fc;̋f;ベ0fc;スにア̊f;セスする DBflute の̊f;ラスを自動ݑf;成します。 ֹf;行すると、dbflute_sample ディレ̊f;トリの generate.[sh|bat] がֹf;行されます。

$ mvn dbflute:generate

今回̆f;、f5c;成し̅f; H2 のデ0fc;̋f;ベ0fc;スの TEST_TABLE ̊f;ラスがݑf;成されます。

dicon の設定

DBflute とデ0fc;̋f;ベ0fc;スの情報を dicon ファイルに記ff0;します。

src/main/resources/app.dicon を以下のように記ff0;されているか確認します。 dbflute.dicon が include されているfc5;要があります。

<?xml version="1.0" encoding="UTf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="convention.dicon"/>
    <include path="aop.dicon"/>
    <include path="dbflute.dicon"/>

    <component name="actionMessagesThrowsInterceptor"
        class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
</components>

src/main/resources/jdbc.dicon を以下のように編集します。 デ0fc;̋f;ベ0fc;スの情報を設定します。

<?xml version="1.0" encoding="UTf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
    "http://www.seasar.org/dtd/components21.dtd">
<components namespace="jdbc">
    <include path="jta.dicon"/>

    <!-- for H2 -->
    <component name="xaDataSource"
        class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
        <property name="driverClassName">
            "org.h2.Driver"
        </property>
        <property name="URL">
            "jdbc:h2:file:"
                + container.getComponent(@java.lang.Class@forName("javax.servlet.ServletContext")).getRealPath("/WEB-INf/db/sample")
        </property>
        <property name="user">"sa"</property>
        <property name="password"></property>
    </component>

    <component name="connectionPool"
        class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
        <property name="timeout">600</property>
        <property name="maxPoolSize">10</property>
        <property name="allowLocalTx">true</property>
        <destroyMethod name="close"/>
    </component>

    <component name="DataSource"
        class="org.seasar.extension.dbcp.impl.DataSourceImpl"
    />

</components>

その他の dicon ファイル̆f; SAStruts の Maven Archetype で SAStruts 向けにQfa;力されていると思いますが、fc5;要にfdc;じて変ff4;して̄f;ださい。

準備完了

以上で DBflute を用いて、デ0fc;̋f;ベ0fc;スにア̊f;セスすることができるようになります。 あと̆f;、fc5;要なウェブペ0fc;ジなどを SAStruts でf5c;成して̄f;ださい。

さらに、CRUD なペ0fc;ジをf5c;成し̅f;い場合̆f;、以下を参照して̄f;ださい。

SAStruts のペ0fc;ジの自動ݑf;成

DBflute Maven Plugin で̆f;、各テ0fc;ブルに関する SAStruts 用のペ0fc;ジを自動ݑf;成することができます。 自動ݑf;成する場合̆f;、以下の手順でֹf;行して̄f;ださい。

CRUD のݑf;成にあ̅f;り、デフォルトの index.jsp が存在しない場合̆f; CRUD のイ0f3;デッ̊f;スペ0fc;ジをݑf;成するので、既存の index.jsp を削除しておきます。

$ rm src/main/webapp/WEB-INf/view/index.jsp

̊f;ラスファイルとJSPのݑf;成

mvn dbflute:generate-crud をֹf;行して、̊f;ラスファイルと JSP を自動ݑf;成します。

$ mvn dbflute:generate-crud

dicon のff4;新

ݑf;成し̅f;ファイルでペ0fc;ジ0f3;グ処理を行う̅f;めに dicon をff4;新します。

src/main/resources/creator.dicon を以下のように編集します。 PagerCreatorをffd;加します。 パッケ0fc;ジ名をカス̋f;マイズしている場合̆f;f75;せて変ff4;して̄f;ださい。

<?xml version="1.0" encoding="UTf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="convention.dicon"/>
    <include path="customizer.dicon"/>

    <component class="org.seasar.framework.container.creator.ActionCreator"/>
    <component class="org.seasar.struts.creator.formCreator"/>
    <component class="org.seasar.framework.container.creator.ServiceCreator"/>
    <component class="org.seasar.framework.container.creator.DtoCreator"/>
    <component class="org.seasar.framework.container.creator.InterceptorCreator"/>

    <component class="org.example.crud.creator.PagerCreator"/>

</components>

src/main/resources/customizer.dicon を以下のように編集します。 pagerCustomizer をffd;加します。

<?xml version="1.0" encoding="UTf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <include path="default-customizer.dicon"/>

    <component name="actionCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
        <initMethod name="addAspectCustomizer">
            <arg>"aop.traceInterceptor"</arg>
        </initMethod>
        <initMethod name="addAspectCustomizer">
            <arg>"actionMessagesThrowsInterceptor"</arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
            </arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.struts.customizer.ActionCustomizer"/>
            </arg>
        </initMethod>
    </component>

    <component name="formCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
    </component>

    <component name="serviceCustomizer"
        class="org.seasar.framework.container.customizer.CustomizerChain">
        <initMethod name="addAspectCustomizer">
            <arg>"aop.traceInterceptor"</arg>
        </initMethod>
        <initMethod name="addCustomizer">
            <arg>
                <component
                    class="org.seasar.framework.container.customizer.TxAttributeCustomizer"/>
            </arg>
        </initMethod>
    </component>

    <component name="pagerCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
    </component>

</components>

Eclipse からのֹf;行

Eclipse で Tomcat プラグイ0f3;がイ0f3;スト0fc;ルしてある場合̆f;、Eclipse 上からֹf;行して動f5c;を確認することができます。 Tomcat プラグイ0f3;からプロジェ̊f;トのコ0f3;テキストのff4;新をして、Tomcat を起動して̄f;ださい。 起動する前にプロジェ̊f;トをリフレッシュして、ビルドするのをfd8;れないようにして̄f;ださい。

war ファイルのݑf;成

mvn install をֹf;行して、war ファイルをݑf;成します。 target/sample.war にݑf;成されます。

mvn install

配備

ݑf;成し̅f; sample.war を Tomcat などに配備して http://localhost:8080/sample/ にア̊f;セスして、表示されることを確認して̄f;ださい。