- 2008年2月29日 21:09
- プログラミング
-
前回、Wicketの開発環境を構築しましたが、色々あって、結局Emacs + JDEE + ECBの組み合わせに落ち着きました。
Eclipse使いたかったなぁ・・・
何はともあれ開発環境も構築できましたので、そろそろ実際にコードを書いて勉強しようと思います。
(進むのが遅くてごめんなさい)
Wicketの公式ページにちょうど良さそうな「Examples」というページがありましたので、今回からしばらくの間「Apache Wicket -Examples編」ということで記事を書いていこうと思います。
Apache Wicket -Examples
「Apache Wicket - Examples編」の記念すべき第1回は、その名も「HelloWorld!」です。
Apache Wicket - ExampleHelloWorld
それでは順を追って説明していきたいと思います。
プロジェクトの作成
まず、プロジェクトを作成します。
ターミナルで以下のコマンドを入力します。
mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.3.1 -DgroupId=wicket.examples.helloworld -DartifactId=ExampleHelloWorld
最初にこのコマンドを試したころと、微妙に実行結果が変わりました。
コマンドの実行中に質問がいくつか表示されます。
以下のような感じで答えました。
Define value for version: :1.0 Define value for package: :wicket.examples.helloworld Y: : Y
「version」はよくわからなかったので適当に「1.0」を入力。
「package」は、コマンドの-Dgourpid引数で入力したのと同じ「wicket.examples.helloworld」を入力。
(どうやら、-Dgourpid引数で入力したパッケージは、生成されるプロジェクトの構成には関係ないみたいです。)
最後に「Y」と答えれば、無事プロジェクトが生成されます。
コーディング
ようやくコーディングです。
HelloWorldの解説ページにあるプログラムを順番に作成していきます。
それぞれのソースコードについて、気づいたことやわかったことを書いていきます。
- HelloWorldApplication.java
「/HelloWorld/src/main/java/wicket/examples/helloworld」ディレクトリに作成します。
このクラスはWicketアプリケーションの「玄関」のようなもののようです。
WebApplicationクラスを継承しています。
このクラスではホームページ(トップページ)の指定や、その他諸々の設定を行うことができます。getHomePageメソッドの戻り値として、HelloWorldクラスのClassオブジェクトを返すように記述されています。
public Class getHomePage(){ return HelloWorld.class; }なお、ソースの先頭に以下の文を記述しておかないと後できちんと動かなくなります。
package wicket.examples.helloworld;
- HelloWorld.java
先ほどと同じディレクトリに作成します。
このクラスはWicketアプリケーションにおける一つのページを表すクラスです。
WebPageクラスを継承しています。先ほどのgetHomePageメソッドが返すクラスです。
つまり、このクラスが表すページが、アプリケーションのホームページということになります。コンストラクタでは、Labelクラスのオブジェクトがaddされています。
Labelクラスのコンストラクタには「message」という文字列と「HelloWorld」という文字列が渡されています。public HelloWorld() { add(new Label("message", "Hello World!")); }Labelクラスは、「コンポーネント」という役割を果たすクラスのようです。
Wicketでは、ページにコンポーネントをどんどん「add」していくことで、動的にページを構成するみたいです。
なお、このソースにも先頭に以下の文を記述しておかないと後できちんと動かなくなります。
package wicket.examples.helloworld;
- HelloWorld.html
先ほどと同じディレクトリに作成します。
Wicketでは、同じ名前のクラスとHTMLファイル1セットで一つのページを表します。
(HelloWorld.javaとHelloWorld.html)このファイルの中で重要なのは以下の部分です。
Message goes here先ほどLabelクラスのコンストラクタに引数として渡した「message」という文字列と、spanタグのwicket:id属性として指定された「message」という文字列が対応しています。
WicketはHTMLソース中から「wicket:id="message"」という属性を持ったspanタグを探します。
見つけたら、それぞれのコンポーネントに応じた処理をspanタグに対して行います。今回使用したLabelコンポーネントは、文字列を挿入する役割を持っているので、上のHTMLコードは実際には以下のように変換されます。
Hello World!このように、「Message goes here」という文字列がLabelクラスのコンストラクタの第二引数として渡された「Hello World!」という文字列に置き換えられます。
- web.xml
「/HelloWorld/src/main/webapp/WEB-INF」に既に存在しているので、修正します。
動作確認
「HelloWorld」ディレクトリに移動し、以下のコマンドを実行します。
mvn jetty:run
「http://localhost:8080/HelloWorld」にアクセスすると、実行結果が見られると思います。
まとめ
今回のチュートリアルで解ったことをまとめます。
- Webアプリケーション自体を表すクラスとして、WebApplicationクラスを継承したクラスを作成する必要がある。このクラスではWebアプリケーションのホームページを設定する。
- Wicketでは、同名のクラスとHTMLファイルがペアとなって一つのWebページを表現する。クラスはWebPageクラスを継承する必要がある。
- Wicketでは、コンポーネントをページにどんどん追加することによって動的にページを構成する。今回は、ページに文字列を挿入するLabelコンポーネントを使用した。
こんなところでしょうか?
書いてみて思ったんですけど、わかりやすく説明するのってものすごく難しいですね。。。
わかりにくかったらすみません><
めげずに次回も頑張ります!
- Newer: 2008年2月の人気記事
- Older: Leopard上で起動したEclipseが頻繁に落ちてしまいます。
- [Wicket修行日記:9]ExampleGuestBook
- [Wicket修行日記:8]ExampleNavomatic
- [Wicket修行日記:6]Wicketの開発環境を構築
- [Wicket修行日記:5]wicket-ja.orgが公開
- [Wicket修行日記:4]自動生成したWicketプロジェクトの中身を調べてみる
