Wicketで始めるオブジェクト指向ウェブ開発

第1回 Hello, Wicket

この記事を読むのに必要な時間:およそ 4 分

ホームページの決定

ところで,先ほどアプリケーションにアクセスした時は,⁠http://localhost:8080/wicket-sample/」というURLでページが表示されました。URLには具体的なページ名が指定されていませんが,ページは表示されました。

これは,Wicketにはホームページと呼ばれる,初期表示用ページが存在するからです。URLで固有のページが指定されなかった場合,Wicketはホームページを表示します。

「WicketApplication.java」を開くと,次のようなメソッドが定義されています。

リスト2 HomePageの指定

public Class<HomePage> getHomePage()
{
  return HomePage.class;
}

getHomePage()メソッドは,Wicketがホームページを決定するために内部的に呼び出すメソッドです。このメソッドが返すクラスを変更すれば,ホームページを変更できるのです。

単純な例ですが,Wicketでは,アプリケーションの設定もこのようにプログラムにて行います。プログラムで行うことで,あなたはここにプログラム制御を加えることもできます。データベースの値や外部ファイルの状況などを読み取り,プログラム的にホームページを切り替えることもできます。これがもし設定ファイルであったら,そのようなアプリケーション的なページの切り替えは,もっと難しいものになったでしょう。

ページとURLの結びつけ

では,HomePageクラスをURLに直接指定して表示するには,どのようなURLにアクセスすればよいのでしょう。実は,HomePageクラスにアクセスするための固定URLは,次のように非常に長いものです。

http://localhost:8080/wicket-sample/?page=jp.gihyo.wicket.wicket-sample.HomePage

これではさすがに,ユーザに覚えてもらえるURLとはいえません。

Wicketではページクラスを特定の「きれいな」URLと簡単に結びつける機能があります。これを「ページのマウント」と呼びます。ページをマウントするには,WicketApplicationクラス内にinit()メソッドを定義し,そこでmountBookmarkablePage()メソッドを呼び出します。

リスト3 ページのマウント

@Override
public void init() {
  super.init();
  mountBookmarkablePage("/top", HomePage.class);
}

mountBookmarkablePage()メソッドを使って,HomePageクラスを「/top」というURLにマウントしました。

先ほど実行した「mvn jetty:run」コマンドがまだ実行中であれば,コントロール+Cを入力し,強制的に停止してください。そしてもう一度「mvn jetty:run」コマンドを実行してください。

ソースがコンパイルされ,新しいソースでアプリケーションが起動します。

今度は,次のようなきれいなURLでページにアクセスすることができます。

http://localhost:8080/wicket-sample/top

さらにWicketを知る

今回は,QuickStartというシンプルなアプリケーションを使って,Wicketがページを表示するまでの動きをみました。もちろん,これはWicketのほんの最初の部分です。まだ,HomePageクラスの中でどのようにページを生成しているのかも見ていません。

しかし,このような小さなアプリケーションであっても,⁠設定ファイルよりもプログラミングでのコントロールを選ぶ」⁠ページをJavaオブジェクトとして扱う」という部分を垣間見られると思います。

まだまだ豊富な機能をもつWicketを知るために,順番を追って理解していきましょう。Wicketでのアプリケーション作成で理解すべき重要なポイントは「モデル」「コンポーネント」という考え方にあります。

次回以降,それらについて順に紹介をしていきます。

著者プロフィール

矢野勉(やのつとむ)

フリーランスのプログラマ。Wicket-ja主催。

ウェブ・アプリケーションの開発を中心にさまざまな案件に関わってきました。現在はWicketによる開発を支援しています。

URLhttp://d.hatena.ne.jp/t_yano/

著書