メゲズにApache Wicket。

昨日のエントリに「Rails脳」というはてなスターを付けられてしまった。ガーン。
このままでは御先祖様に申し訳が立たないのでWicketに再チャレンジ。

NetBeans6.0.1をインストール。

Ruby専用版を入れていたのでいったん削除。
フルセットを取ってきて、NetBeans本体とApache Tomcatをインストール。

必要なJavaライブラリをNetBeansにセット。

Wicket開発には、必要なライブラリが結構あるのねー。

  • Apache Wicket 1.3.0 : 当然必要。
  • Apache Velocity 1.5 : VelocityってWicketみたいなもんじゃなかったっけ・・・
  • SLF4J 1.4.3 : なんと、知らない間に log4j が終わってこっちが主流らしい。もう浦島太郎・・・

ほかにも関連ライブラリがごちゃごちゃあるかもしれないが、調べるのが面倒なのでVelocityのlibに入っていたのをごっそりセット。
また配備を簡単にするために、プロジェクトプロパティーの「構築 - パッケージング」にも上記ライブラリをセット。

NetBeansで「Webアプリケーション」プロジェクトを作成。

プロジェクトの調整。

まず index.jsp はいらないので削除。
そして WEB-INF/web.xml を以下のように書き換え。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>Yotaropg Helloworld Wicket</display-name>
    <filter>
        <filter-name>YoratopgHelloWorldWicket</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
          <param-name>applicationClassName</param-name>
          <param-value>jp.yotaropg.YotaropgHelloWorld.Application</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>YoratopgHelloWorldWicket</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Wicketソースコードを書く。

  1. パッケージ jp.yotaropg.YotaropgHelloWorld を作成。
  2. このパッケージに、Javaクラス Application と HelloWorld を作成。
  3. おなじく、パッケージ内に HelloWorld.html を作成。

で、クラスとHTMLの中身を書いていく。

Application.java

package jp.yotaropg.YotaropgHelloWorld;

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

public class Application extends WebApplication
{
    public Application()
    {

    }

    public Class getHomePage()
    {
        return HelloWorld.class;
    }
}

HelloWorld.java

package jp.yotaropg.YotaropgHelloWorld;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;

public class HelloWorld extends WebPage
{
    public HelloWorld()
    {
        add(new Label("message", "Hello World!"));
    }
}

HelloWorld.html

<html>
<body>
    <span wicket:id="message" id="message">Message goes here</span>
</body>
</html>

NetBeans上で実行。

F6をぽちっとな。
するとビルド・配備・Tomcat起動・ブラウザ立ち上げ、まで一気に行われて。
無事に「Hello World!」と表示されました。
ばんざーい。もうRails脳とは言わせない。

感想。

実際に書いてみたら、けっこう快適。ルールを覚えてしまえばスラスラ書けるかも。
HelloWorldじゃページ間遷移がないから、そのあたりの扱いは気になる。またあとで調べよう。


Wicketって「Javaらしく書ける」がいいところだという。
ということは開発は「ページありき」ではなく「クラス/オブジェクトありき」ということなんだろうか。
だとしたら、

  1. Wicketクラスを書く。必要なUIのオブジェクトを add() でゴリゴリ追加する。
  2. HTMLファイルを書く。ここでオブジェクトのレイアウトを決める。

って感じなのかな。うーん。やっぱりJavaとHTMLの両方にUIクラスを書く、というのがひっかかる。


でも、Strutsよりは断然楽そう。すてき。