ClickServletの登録
では、コーディングに入りましょう。まず最初に行うのは、「ClickServletの登録」です。Apache Clickでは、「ClickServlet」というサーブレットにより全体を制御します。このサーブレットを登録する必要があります。web.xmlを開き、次のように修正します。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>clickapp</display-name>
<servlet>
<servlet-name>ClickServlet</servlet-name>
<servlet-class>org.apache.click.ClickServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ClickServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>helo.htm</welcome-file>
</welcome-file-list>
</web-app>
ここでは、org.apache.click.ClickServletというサーブレットを登録し、*.htmで呼び出されるようにしています。また、ここではhelo.htmをウェルカムページにしておきました。これで、ファイル名が省略された場合にはhelo.htmが呼ばれるようになります。
click.xmlの用意
続いて、Apache Clickの設定情報を管理するXMLファイルを作成します。WEB-INF内に「click.xml」という名前でファイルを作成してください。そして次のように記述をします。
<?xml version="1.0" encoding="UTF-8"?> <click-app charset="UTF-8"> <pages package="jp.codezine.click"> <page path="helo.htm" classname="HeloPage"/> </pages> </click-app>
<click-app>というタグの中に、アプリケーションで必要となる情報を記述します。なお<click-app>には、charset="UTF-8"という属性が記述されていますが、これによりテキストのエンコーディングはUTF-8を使用するようになります。以後、ファイルの作成時には(Javaソースコードファイルを除いて)UTF-8を使うように心がけてください。
Apache Clickでは、「Page」と呼ばれるクラスを作成します。それぞれのWebページごとに、Pageクラスと、そこで表示する画面となるテンプレートファイルを用意し、各Pageクラスとテンプレートファイルのマッピング情報を用意しておくのです。それが、<pages>タグの部分です。
このタグ内には、<page>タグとして、path="helo.htm" classname="HeloPage"という設定を用意しています。これにより、helo.htmにアクセスがあった場合には、HeloPageクラスがPageクラスとして使われるようになります。
このhelo.htmは、HTMLで記述したテンプレートファイルです。Apache Clickでは、HTMLベースのテンプレートを読み込み、これをレンダリングして結果をクライアントに送り返すことでページを表示します。
オートマッピングについて
このようにApache Clickでは、click.xmlでPageクラスとテンプレートファイルをマッピングして、表示するWebページを登録していきます。ただし、このやり方はページ数が増えてくると少々面倒になってくることでしょう。また、先にApache Wicketについて説明した後でこれを読むと「また設定ファイルの世界に逆戻りか」と思ってしまうかもしれません。
実をいえば、今のclick.xmlは、もっと簡単に記すことができます。次のように書いても、まったく問題なく機能するのです。
<?xml version="1.0" encoding="UTF-8"?> <click-app charset="UTF-8"> <pages package="jp.codezine.click"/> </click-app>
<pages>にpackageの指定を用意しているだけです。各ページごとのマッピング情報はありませんが、これでも問題なく動きます。
Apache Clickには「オートマッピング」と呼ばれる機能があります。これは、アクセスされたURLに応じて自動的にPageクラスとテンプレートファイルを読み込み表示する機能です。例えば、「helo.htm」にアクセスがあったなら、自動的に「HeloPage」というPageクラスと「helo.htm」というテンプレートファイルをロードしてWebページを生成します。あらかじめ決められた命名規則に従ってPageクラスとテンプレートファイルを用意すれば、わざわざclick.xmlに<page>タグとしてマッピング情報を記述する必要はないのです。
