FrontPage

2008/01/11からのアクセス回数 8224

Mavenを使ったSpring-MVC開発

Spring-MVC用プラグインのインストール

今回独自にSpring-MVC用のプラグインを開発しました。

上記の添付ファイルをダウンロードしてください。

この他にSunが提供するjta用のライブラリが必要です。

  • 次に以下のコマンドを実行してください。
    mvn install:install-file \
     -Dfile=./spring-mvc-archetype-1.0-SNAPSHOT.jar \
     -DgroupId=jp.co.pwv.spring-mvc-archetype \
     -DartifactId=spring-mvc-archetype \
     -Dversion=1.0-SNAPSHOT \
     -DpomFile=./spring-mvc-archetype-1.0-SNAPSHOT.pom \
     -Dpackaging=jar
    
    mvn install:install-file \
     -Dfile=./maven-GenMVC-plugin-1.0-SNAPSHOT.jar \
     -DgroupId=org.apache.maven.plugins \
     -DartifactId=maven-GenMVC-plugin \
     -Dversion=1.0-SNAPSHOT \
     -DpomFile=./maven-GenMVC-plugin-1.0-SNAPSHOT.pom \
     -Dpackaging=jar
    
    mvn install:install-file \
     -Dfile=./jta-1_0_1B-classes.zip \
     -DgroupId=javax.transaction \
     -DartifactId=jta \
     -Dversion=1.0.1B \
     -Dpackaging=jar
    
    

最初の一歩(Spring-MVCのひな形をつくる)

準備が整ったので、Spring-MVCを試すためにspring-mvc-archetypeを使ってひな形を作成します。

spring-mvc-archetypeは、以下の形式で使います。

mvn archetype:create \
	-DgroupId=パッケージ名 \
	-DartifactId=サーブレット名 \
	-DarchetypeArtifactId=spring-mvc-archetype \
	-DarchetypeGroupId=jp.co.pwv.spring-mvc-archetype \
	-DarchetypeVersion=1.0-SNAPSHOT

例題では、

mvn archetype:create \
	-DgroupId=example.test \
	-DartifactId=test \
	-DarchetypeArtifactId=spring-mvc-archetype \
	-DarchetypeGroupId=jp.co.pwv.spring-mvc-archetype \
	-DarchetypeVersion=1.0-SNAPSHOT

とします。

途中、以下のようにWARINGが出力されます。

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] ------------------------------------------------------------------------
.....
[WARNING] org.apache.velocity ... /db-def.xml [line 18,column 32] : ${db.driver} is not a valid reference.
[WARNING] org.apache.velocity ... /db-def.xml [line 21,column 32] : ${db.url} is not a valid reference.
.....
[INFO] Archetype created in dir: /Users/take/tmp/test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Sat Jan 12 14:40:50 JST 2008
[INFO] Final Memory: 5M/9M
[INFO] ------------------------------------------------------------------------

これは、ひな形にVelocityの変数参照のような形式が埋め込まれているためで、ひな形生成には影響ありません。

生成されたファイルを見てみましょう。

cd test
ls -R

とするとどのようなファイルが生成されたか分かります。

またeclipseでこのプロジェクトが管理できるようにeclipseプラグインを起動します。

mvn eclipse:eclipse

eclipseで生成されたファイルをみると次のようになります。

生成されたファイル.jpg

このプログラムでは、hsqldbのデータベースを使用するため設定内容を変更する必要があります。

src/main/webapp/WEB-INF/jdbc.propertiesの以下の部分を変更してください。

# サーバとして使用する場合
#db.url=jdbc:hsqldb:hsql://localhost
# スタンドアローンで使用する場合
db.url=jdbc:hsqldb:/tomcatのフルパス/webapps/test/WEB-INF/hsqlDb/test

Windowsの場合には、エディタでjdbc.propertiesの改行コードを修正してください。

hsqldbをサーバとして使用する場合には、db.url=jdbc:hsqldb:hsql://localhostを使用してください。

実行

作成したtestサーブレットを実行するためには、mavenのpackageコマンドでwarファイルを生成します。

maven package

warファイルは、target/test.warに生成されます。 これをtomcatのwebappsにコピーします。

ブラウザーでhttp://localhost:8080/test/

と入力すると、以下のページが表示されます。

test.jpg
  • [edit]リンクを押すと編集画面が表示されます
  • [delete]リンクを押すとデータが削除されます
  • addリンクを押すと新規データ編集画面が表示されます

編集画面は、以下のようなページです。

edit.jpg

モデルからひな形を生成する

最近の自動生成ツールがデータベースのテーブルからMVCのプログラムを生成する のが多いのですが、ここではモデルからMVCのプログラムのひな形、データベースのテーブルを 生成する方法を示します。

GenMVCプラグインは、pring-mvc-archetypeで生成されたプロジェクトを前提としていますので、 それ以外のプロジェクトでは正常に動作しませんので、ご注意ください。

モデルファイルの作成

eclipseでexample.test.domainパッケージにScheduleクラスを生成します。

クラスには、必ずInteger id;のフィールドを追加してください。

import java.util.Calendar;
import java.util.Date;

public class Schedule {
	private Integer	id;
	private Date	datetime = Calendar.getInstance().getTime();
	private String	title;
	private String	text;

}

と入力して、右クリックでsource->Generate Getter And Setter...を選択して すべてのGetter, Setterを生成します。

完成したScheduleクラスは次のようになります。

package example.test.domain;

import java.util.Calendar;
import java.util.Date;

public class Schedule {
	private Integer	id;
	private Date	datetime = Calendar.getInstance().getTime();
	private String	title;
	private String	text;
	public Date getDatetime() {
		return datetime;
	}
	public void setDatetime(Date datetime) {
		this.datetime = datetime;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
}

ひな形の生成

GenMVCプラグインを使ってScheduleクラスをモデルとしたコントローラ、ビュー、データベースのテーブルを生成します。GenMVCを使用する前に、Scheduleのコンパイルが必要ですので、mvn packageを実行するのを忘れないようにしてください。

mvn package
mvn GenMVC:scaffold

新しく生成されたファイルは、

  • java/example/test/service/ISchedule.java
  • java/example/test/service/ScheduleManager.java
  • java/example/test/service/stub/ScheduleDao.java
  • java/example/test/service/web/EditScheduleController.java
  • java/example/test/service/web/ScheduleOpsController.java
  • webapp/WEB-INF/hbm-dir/Member.hbm.xml
  • webapp/WEB-INF/velocity/scheduleops/list_stub.vm
  • webapp/WEB-INF/velocity/scheduleops/list.vm
  • webapp/WEB-INF/velocity/editSchedule_stub.vm
  • webapp/WEB-INF/velocity/editSchedule.vm

変更のあったファイルは、

  • webapp/WEB-INF/sql/createTable.sql
  • webapp/WEB-INF/applicationContext.xml
  • webapp/WEB-INF/servlet-stub.xml

です。 最初の実行と同様にwarファイルを生成します。

mvn package

test.warファイルをtomcat/webappsにコピーします。 ブラウザーでhttp://localhost:8080/test/scheduleops/list.htmを指定すると、 addリンクだけのページ表示されますので、addリンクをクリックします。

editschedule.jpg

データを入力してSave Changesボタンを押すと

listschedule.jpg

が表示され、データが正しく入力されていることが確認できます。

コメント

この記事は、

選択肢 投票
おもしろかった 1  
そうでもない 1  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)


添付ファイル: filemaven-GenMVC-plugin-1.0-SNAPSHOT.jar 614件 [詳細] filespring-mvc-archetype-1.0-SNAPSHOT.pom 819件 [詳細] filespring-mvc-archetype-1.0-SNAPSHOT.jar 635件 [詳細] fileeditschedule.jpg 754件 [詳細] filelistschedule.jpg 755件 [詳細] fileedit.jpg 744件 [詳細] filetest.jpg 719件 [詳細] file生成されたファイル.jpg 788件 [詳細] filejta-1_0_1B-classes.zip 613件 [詳細] filemaven-GenMVC-plugin-1.0-SNAPSHOT.pom 821件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-28 (火) 13:01:12 (2360d)
SmartDoc