![[PukiWiki] [PukiWiki]](image/pukiwiki.png) 
 2008/01/11からのアクセス回数 12196
今回独自に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-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で生成されたファイルをみると次のようになります。
このプログラムでは、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/
と入力すると、以下のページが表示されます。
編集画面は、以下のようなページです。
最近の自動生成ツールがデータベースのテーブルから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
新しく生成されたファイルは、
変更のあったファイルは、
です。 最初の実行と同様にwarファイルを生成します。
mvn package
test.warファイルをtomcat/webappsにコピーします。 ブラウザーでhttp://localhost:8080/test/scheduleops/list.htmを指定すると、 addリンクだけのページ表示されますので、addリンクをクリックします。
データを入力してSave Changesボタンを押すと
が表示され、データが正しく入力されていることが確認できます。
皆様のご意見、ご希望をお待ちしております。