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

SAStruts での利用

Maven を利用して SAStruts のプロジェクトを作b10;して̀1;DBFlute Maven Plugin を用いた開発の۔1;れを説明します。

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

ここでの説明を進̈1;る上で̀1;Maven 2 または 3 のインストールをしておく必࢘1;があります。

SAStruts プロジェクトの作b10;

SAStruts では Maven Archetype を提供しています。 Archetype を用いることで̀1;mvn コマンドを利用して̀1;SAStruts のプロジェクトを作b10;することができます。 詳しくは̀1;SAStruts の Maven Archetypeを参167;してください。

プロジェクトの作b10;は archetype:generate ゴールを実行します。 たとえば̀1;以下のように実行します。

$ 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

実行すると̀1;確認を求̈1;る Y が表示されるので̍1;ラ̎1;ータが問題な̅1;れば Y を165;力します。 BUILD SUCCESS になると̀1;artifactId で指定したディレクトリにプロジェクトがu1f;b10;されます。

$ 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

必࢘1;に応じて̀1;pom.xml を編集してください。

mvn eclipse:eclipse の実行

Eclipse で読み込̈1;るようにします。

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

実行することにより̀1;src/main/webapp/WEB-INF/lib/ が更新され̀1;必࢘1;な jar フ̊1;イルが 14d;置されます。 Eclipse でプロジェクトとしてインポートしてください。 プロジェクトにエラーなどが表示される場合は̀1;プロジェクトをリフレッシュした後にプロジェクトをビルドしてください。(1ea;動ビルドが設定されていればクリーンするとビルドされます)

データベースの作b10;

今回は H2 を利用します。 別なデータベースを利用する場合は̀1;この部分をスキップしてください。

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

ブラウザが開き̀1;http://localhost:8082/ が表示されます。 表示されない場合は̀1;その URL を表示してください。

JDBC URL を jdbc:h2:sample を165;力して̀1;H2 のデータベースに接続します。 ドライバクラスは org.h2.Driver̀1;ユーザ名はsà11;スワードは空欄のデフォルト値で問題ありません。 接続ボタンを押下して̀1;SQLの165;力画面を表示します。 今回は以下の単}14;なテーブルを作b10;します。

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

上Š18;を165;力して̀1;実行ボタンを押下します。 エラーが表示されていないことを確認し̀1;TEST_TABLEが左側に一覧されていることも確認します。 テーブルが作b10;できたら̀1;H2 を終了します。 左上の切断アイコンを押下するとデータベースの接続が切断されます。 ブラウザを閉じても H2 は終了しないので̀1;タスクトレイにあるアイコンから終了を選択してください(EXIT̎1;ニューを選択します)。

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

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

DBFlute のダウンロード

mvn dbflute:download を実行して̀1;DBFlute のダウンロードします。 DBFlute のバージョンは pom.xml にŠ18;述した dbfluteVersion になります。

$ mvn dbflute:download

mydbflute/dbflute-[バージョン] が作b10;され̀1;そこに DBFlute が展開されます。

0.9.4.1 以前のバージョンを利用していて̀1;Unix 系 OS を利用している場合は̀1;ant の実行権を設定する必࢘1;があります。

chmod +x mydbflute/dbflute-[バージョン]/ant/bin/ant

DBFlute クライアントのu1f;b10;

mvn dbflute:create-client を実行して̀1;DBFlute クライアントをu1f;b10;します。 実行すると̀1;mydbflute/dbflute-[バージョン]/etc/client-template/dbflute_dfclient.zip を dbflute_sample ディレクトリに展開して̀1;pom.xml にŠ18;述した̍1;ラ̎1;ータを DBFlute クライアントに1ea;動で反映します。

$ mvn dbflute:create-client

スキーマ情փ1;の取得

mvn dbflute:jdbc を実行して̀1;データベースのスキーマ情փ1;を取得します。 実行すると̀1;dbflute ディレクトリの jdbc.[sh|bat] が実行されます。

$ mvn dbflute:jdbc

今回は̀1;データベースの作b10;の手順でu1f;b10;した H2 データベースを参167;して̀1;DBFlute が実行されます。 対ࣆ1;の DBFlute の設定フ̊1;イルは dbflute_sample/dfprop/databaseInfoMap.dfprop になります。

クラスフ̊1;イルのu1f;b10;

mvn dbflute:generate を実行して̀1;データベースにアクセスする DBFlute のクラスを1ea;動u1f;b10;します。 実行すると̀1;dbflute_sample ディレクトリの generate.[sh|bat] が実行されます。

$ mvn dbflute:generate

今回は̀1;作b10;した H2 のデータベースの TEST_TABLE クラスがu1f;b10;されます。

dicon の設定

DBFlute とデータベースの情փ1;を dicon フ̊1;イルにŠ18;述します。

src/main/resources/app.dicon を以下のようにŠ18;述されているか確認します。 dbflute.dicon が include されている必࢘1;があります。

<?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 を以下のように編集します。 データベースの情փ1;を設定します。

<?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 フ̊1;イルは SAStruts の Maven Archetype で SAStruts T111;に1fa;力されていると`1d;いますが̀1;必࢘1;に応じて変更してください。

準備完了

以上で DBFlute を用いて̀1;データベースにアクセスすることができるようになります。 あとは̀1;必࢘1;なウェブページなどを SAStruts で作b10;してください。

さらに̀1;CRUD なページを作b10;したい場合は̀1;以下を参167;してください。

SAStruts のページの1ea;動u1f;b10;

DBFlute Maven Plugin では̀1;各テーブルに関する SAStruts 用のページを1ea;動u1f;b10;することができます。 1ea;動u1f;b10;する場合は̀1;以下の手順で実行してください。

CRUD のu1f;b10;にあたり̀1;デフォルトの index.jsp が存在しない場合は CRUD のインデックスページをu1f;b10;するので̀1;既存の index.jsp を削除しておきます。

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

クラスフ̊1;イルとJSPのu1f;b10;

mvn dbflute:generate-crud を実行して̀1;クラスフ̊1;イルと JSP を1ea;動u1f;b10;します。

$ mvn dbflute:generate-crud

dicon の更新

u1f;b10;したフ̊1;イルでページング1e6;理を行うた̈1;に dicon を更新します。

src/main/resources/creator.dicon を以下のように編集します。 PagerCreatorを追加します。 ̍1;ッ̋1;ージ名をカスタマイズしている場合は併せて変更してください。

<?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 を追加します。

<?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 からの実行

Eclipse で Tomcat プラグインがインストールしてある場合は̀1;Eclipse 上から実行して動作を確認することができます。 Tomcat プラグインからプロジェクトのコンテキストの更新をして̀1;Tomcat を起動してください。 起動する前にプロジェクトをリフレッシュして̀1;ビルドするのを忘れないようにしてください。

war フ̊1;イルのu1f;b10;

mvn install を実行して̀1;war フ̊1;イルをu1f;b10;します。 target/sample.war にu1f;b10;されます。

mvn install

14d;備

u1f;b10;した sample.war を Tomcat などに 14d;備して http://localhost:8080/sample/ にアクセスして̀1;表示されることを確認してください。