いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Tapestry奮闘記-0002 (とりあえずインストール編)

本来、spindleなどを入れればそのままTapestryごとついてくるのですが
今回は、Tapestry本家からダウンロード・・・しようと思ったのですが
Tapestry本家からのダウンロードファイルでは必要ライブラリが足りない
みたいなので、以下の場所からTapestryのサンプルWebアプリをダウンロード。

http://howardlewisship.com/downloads/quick-start/

上記のページからtapestry-example-4.0.tar.gzを落とし解凍。その中にある
ライブラリを使用することにしました。(まとめて、WEB-INF/libにコピー)

まず、サンプルとして作成するWEBアプリの構造を作成。以下のようにします。

        WEB-INF
            ├classes
            ├lib
            ├MyTapestrySample.application
            ├各HTMLテンプレートとpage仕様ファイル
            └web.xml

まずは、最低限必要なファイルの作成。
まずは、web.xml.こちらはほぼお決まりの内容です。
本当は、RedirectFilterなどいろいろ設定がいるみたいですが、
とりあえず今は無視!!(笑

<?xml version="1.0" encoding="Windows-31J"?>
<!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>MyTapestrySample

    <!--
        サーブレット設定
    -->
    <servlet>
        <servlet-name>TapestryServlet

        <!-- Tapestryの場合は、デフォルトでこのサーブレットが全てのリクエストを受け付ける -->
        <servlet-class>org.apache.tapestry.ApplicationServlet

        <load-on-startup>1
    </servlet>

    <servlet-mapping>
        <servlet-name>TapestryServlet
        <url-pattern>/app
    </servlet-mapping>
</web-app>

続いて、アプリケーションの仕様を記述するapplicationファイル。

<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE application
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">

<application name="MyTapestrySample" engine-class="org.apache.tapestry.engine.BaseEngine">

    <meta key="org.apache.tapestry.output-encoding" value="Windows-31J"/>
    <meta key="org.apache.tapestry.template-encoding" value="Windows-31J"/>

    <!--
        このアプリケーションに存在するページを記述する
    -->
    <page name="Home" specification-path="Home.page"/>

</application>

Tapestryは各アプリケーションにHomeという名前のページが必要みたいなので、
HTMLテンプレートとページ仕様ファイルを追加。
(TapestryはHTMLとロジックの分離が徹底されていて、基本的に一画面につき
HTMLテンプレート・ページ仕様ファイル・ページコンポーネントファイルから
出来ています。)

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS;"/>
        <title>トップページ
    </head>
    <body>
        テストページ
        <br/>
    </body>
</html>

いたって普通のHTMLファイル。後は、このHTMLテンプレートのページ仕様ファイルを
作成。

<?xml version="1.0" encoding="Windows-31J"?>
<!DOCTYPE page-specification
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">

<!--
    独自のページコンポーネントクラスを作成している場合は、
    class属性にそのクラスをフルパッケージ名で指定する。

    デフォルトのままで良い場合は、以下のようにTapestryの
    基本ページクラスを用いる。
    • >
<page-specification class="org.apache.tapestry.html.BasePage"> </page-specification>

とまあ、ここまで来てやっとこさ表示できる状態になりました。
あとはTOMCATなどのサーブレットコンテナにデプロイして、
確認です。無事画面にテストページって見えたらOK.



[あとがき]
私の環境では、ページ自体は表示されるんですが、
表示されたページのエンコーディングがutf-8になってしまいます・・・。
ためしに、上記の全てのファイルをutf-8に書き換えてxml宣言の
エンコード設定もutf-8にしてやってみたら今度は文字化けして
見れなくなりました・・・。何故????????

原因をご存知の方いらっしゃいましたら、ご教授お願いいたします。m(_ _)m
(個人的には、Shift_JISで設定してるんやからなんでそうならへんねん!!
って感じです・・)


とりあえず、ページは見れる状態になったので、
次は、jwcidの使い方を勉強してみます。