Mapper
概要
CLSテンプレートファイルから出力結果を生成するコンポーネントは Mapper という名前です。 これは、当初からサーブレットにアクセスするためのURIと、CLSテンプレートファイルをマッピングしていたことに由来します。
使用例はinfo.port4.pasta.cls.filters.IncludeFilterが実際に使っているので、ソースを見るのがよいでしょう。
Root Mapper
Pastaの設定ファイル(pasta.xconf)にmapper-rootという項目があります。 これは、URIとCLSテンプレートファイルのマッピングを設定するものです。 Pastaサーブレットにブラウザでアクセスするときのパスとテンプレートファイルの関係、 あるいはinclude Filterに渡すURIと挿入されるテンプレートの関係はこの設定によります。
pasta.xconfには以下の記述があります。
<mapper-root id="root" default="true">
<parameter name="config-file" value="context:/WEB-INF/mapping.xml"/>
</mapper-root>
これは、マッピングの詳細は/WEB-INF/mapping.xmlに記述されているということです。 このファイルの変更は実行中に検出されるので、mapping.xml修正後にサーブレットコンテナを再起動する必要はありません。
mapping.xmlファイルの内容は、大抵次のようなものです。
<?xml version="1.0" encoding="UTF-8"?>
<mapping mime-type="text/html; charset=Shift_JIS"
form-encoding="Shift_JIS">
<mapper pattern="/jsp/*.html" map-to="/jsp/{1}.jsp"
type="html-forward"/>
<mapper pattern="/**.html" map-to="context:/{1}.html"
type="html-file"/>
<mapper pattern="/**.xhtml" map-to="context:/{1}.xhtml"
type="xml-file"/>
<mapper pattern="/**.act" map-to="context:/{1}.act"
mime-type=""
type="xml-actfile"/>
<mapper pattern="/**.jpg" map-to="context:/{1}.jpg"
mime-type="image/jpeg"
type="direct"/>
</mapping>
ルート要素mappingにはデフォルトのMIME型と、フォームのエンコーディングが記述されています。 これは、Pastaサーブレットが返すContent-Typeヘッダの値と、フォームから送られたパラメータをデコードする際のキャラクタ・エンコーディングです。 これらの設定は内部のmapper要素で上書きすることもできます。
以下はmapper要素の各属性の説明です。
| pattern | 外部からアクセスする時のURIパターンです。 |
|---|---|
| map-to | 実際に使用するCLSテンプレートです。 先頭にcontext:とつけるのは、ウェブアプリケーションディレクトリ内のファイルを利用することを表しています。 ただし、type属性で指定するMapperのタイプによっては意味合いが変わることもあります。 |
| type | Mapperのタイプです。 |
| mime-type | Mapperで上書きするMIME型。省略するとデフォルト値が使われます。 |
| form-encoding | Mapperで上書きするフォームのエンコーディング。省略するとデフォルト値が使われます。 |
| internal-only | "true"を指定すると、プログラム内からのアクセスに限定し、ウェブブラウザなどで直接ページを表示できないようにします。 プログラム内からのアクセスとは、include Filterによるページの利用や、プログラム内から直接Mapperを呼び出す場合です。 |
URIパターンの記述方法はCocoon2の WildcardMatcher 形式を採用しているので、こちらも参照してください。
設定例についてはPasta サーブレットの説明も参照してください。

