SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~Apache Wicketで簡単Webアプリ作成(1)

第1回

Webアプリケーションの作成

 では、Wicketを利用したWebアプリケーションを作成してみましょう。1から作成してもよいのですが、ここではEclipse IDE for Java EE Developersを使って作成をしていくことにしましょう。

 Wicketは、一般的なWebアプリケーションに、必要なライブラリを追加するだけで使えるようになります。ここでは動的Webプロジェクトとして新しくプロジェクトを作成することにしましょう。プロジェクト名は「wic_sample」としておきます。そして作成後、WebContent/WEB-INF/lib内に、Wicket本体と先ほどのログ関連の3ファイルをコピーします。これで、必要なファイルは用意できました。

 では、WicketをWebアプリケーション内で使えるようにしましょう。これは、web.xmlに、Wicketのフィルタを設定するだけです。<web-app>内に、次のようにフィルタを追加するタグを記述してください。

<filter>
    <filter-name>wickletFilter</filter-name>
    <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
    <init-param>
        <param-name>applicationClassName</param-name>
        <param-value>jp.tuyano.WicSample</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>wickletFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 見れば分かるように、Wicketは、org.apache.wicket.protocol.http.WicketFilterというフィルタとしてすべてのアクセスを横取りして処理するようになっています。また、<init-param>で、applicationClassNameというパラメータを用意していますが、これはWicketで必要になる「アプリケーションクラス」の名前を設定するものです。ここでは、jp.tuyano.WicSampleというクラスにしてあります(アプリケーションクラスについては後述します)。

WebApplicationクラスを作成する

 では、簡単なサンプルを作成してみましょう。ここでは、ごく単純なテキストを表示するページを作成してみます。まず最初に作成するのは「WebApplicationクラス」です。これは先ほど、applicationClassNameでアプリケーションクラスとして指定したクラスのことです。

 WebApplicationクラスはWebアプリケーションを管理するコンポーネントとなるものです。Wicketでは、Webアプリケーションはまずアプリケーションクラスが用意され、そこに使用するページの数だけページクラス(各ページを管理するコンポーネント)が用意されます。AWTやSwingなどでは、まずアプリケーションとなるメインクラスを用意し、そこで必要に応じてフレームクラスを作成していきます。これと同じように、Wicketではアプリケーションクラスとページクラスを使って全体を管理すると考えると良いでしょう。

 では、「src」内にjp.tuyanoというパッケージを用意し、そこに「WicSample.java」というファイルを作成して「WicSample」アプリケーションクラスを作りましょう。

package jp.tuyano;

import org.apache.wicket.Page;
import org.apache.wicket.protocol.http.WebApplication;

public class WicSample extends WebApplication {

    @Override
    protected void init() {
        super.init();
        this.getRequestCycleSettings().setResponseRequestEncoding("UTF-8");
        this.getMarkupSettings().setDefaultMarkupEncoding("UTF-8");
    }

    @Override
    public Class<? extends Page> getHomePage() {
        return IndexPage.class;
    }

    @Override
    public String getConfigurationType() {
        return WebApplication.DEVELOPMENT;
    }
}

 ここでは、3つのメソッドが用意されています。それぞれの役割と行っていることを順に整理していきましょう。

  • init
  •  これは、アプリケーションクラスの初期化を行うためのものです。WebApplication継承クラスでは、コンストラクタでは初期化処理は行いません。コンストラクタ実行時にはまだコンポーネントの準備が完了していないため、このinitで初期化処理を行います。初期化は、まずsuper.initでスーパークラスのinitを呼び出した後、必要な作業を行います。ここでは、レスポンスエンコーディングと、マークアップエンコーディングの2つのエンコードをUTF-8に設定する処理を呼び出しています。この2行はエンコーディングを設定するための基本として「initで必ずこう書いておく」と理解しておくと良いでしょう。

  • getHomePage
  •  これは、このWebアプリケーションのホームページとなるクラスを返すメソッドです。ここでは、IndexPage.classを返しています。この後に作成をしますが、このIndexPageが、Webアプリケーションにアクセスしたときに表示されるページを管理するクラスになります。

  • getConfigurationType
  •  これは、アプリケーションの設定タイプを指定するものです。WebApplication.DEVELOPMENTという値を返していますが、これは現在、開発中であることを示す値です。開発が完了し正式リリースする際には、WebApplication.DEPLOYMENTにしておきます。

次のページ
IndexPage.htmlの作成

この記事は参考になりましたか?

Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4459 2009/10/22 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー