Home > プログラミング > [wicket修行日記:7][Apache Wicket - Examples編]HelloWorldをやってみる

[wicket修行日記:7][Apache Wicket - Examples編]HelloWorldをやってみる [wicket修行日記:7][Apache Wicket - Examples編]HelloWorldをやってみる

Wicket修行日記:目次

前回、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コンポーネントを使用した。

こんなところでしょうか?

書いてみて思ったんですけど、わかりやすく説明するのってものすごく難しいですね。。。
わかりにくかったらすみません><

めげずに次回も頑張ります!

次へ進む。

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://www.kadoppe.net/mt/mt-tb.cgi/140
Listed below are links to weblogs that reference
[wicket修行日記:7][Apache Wicket - Examples編]HelloWorldをやってみる from CreativeStyle

Home > プログラミング > [wicket修行日記:7][Apache Wicket - Examples編]HelloWorldをやってみる

Search
Feeds
Twitter

follow kadoppe at http://twitter.com
iKnow
Blog Parts
あわせて読みたい フィードメーター - CreativeStyle この日記のはてなブックマーク数 kadoppeさんの体重グラフ

Return to page top