- PR -

web.xmlでtaglib宣言って不要ですか?

1
投稿者投稿内容
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2004-05-18 21:17
お世話になります。

タグライブラリを使う場合、web.xmlに以下のようなtaglib宣言って必要だったと思うのですが、、、


<taglib>
<taglib-uri>http://hoge.com/tags</taglib-uri>
<taglib-location>/WEB-INF/hoge.tld</taglib-location>
</taglib>


今日、ひさびさにJSTLを使ってみると、web.xmlに何もかいてなくても動いてます。有名なuriは書かなくていいんでしたっけ?ご存知の方いらっしゃいましたら、ご教授お願いします。


[環境]
Windows XP
JDK 1.4.2
Tomcat 4.1.27
JSTL 1.0.5
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-05-18 21:36
みやもさん、こんにちは。米山@クロノスです。

引用:

みやもさんの書き込み (2004-05-18 21:17) より:

今日、ひさびさにJSTLを使ってみると、web.xmlに何もかいてなくても動いてます。有名なuriは書かなくていいんでしたっけ?ご存知の方いらっしゃいましたら、ご教授お願いします。



タグライブラリを使用するにはコンテナがTLDファイルを参照できるようにしなければなりませんが、それには次のような方法があります。

○ 直接参照する方法
JSPファイルのtaglibディレクティブで属性uriを記述する。
これは、JSPファイルからの相対パスもしくはコンテキスト・ルートからの絶対パスを直接指定する方法です。

○ web.xmlでURIマッピングを行う方法
web.xmlファイルの<taglib>要素を使用し、次のように記述する。
コード:

<taglib>
<taglib-uri>識別用URI(何でもよい。taglibディレクティブのuri属性で使用)</taglib-uri>
<taglib-location>コンテキスト・ルートからのTLDファイル物理パス</taglib-location>
</taglib>


この方法が、みやもさんが書いている方法ですね。
TLDファイルの物理パスを論理URIにマッピングする方法です。JSPファイルのtaglibディレクティブではこの論理URIを指定します。

○ TLDファイル自体でURIマッピングを行う方法
TLDファイルの<taglib>要素の子要素<uri>に識別用URIを記述。
サーブレット・コンテナはWEB-INFディレクトリ以下、サブ・ディレクトリも含めて.tldという拡張子を持つファイルを検索し、<uri>で定義されている識別用URIとTLDファイル自体のマッピングを行います。
WEB-INF/libにおかれたJARファイルについては、META-INFディレクトリ内のTLDファイルが検索され、同様にマッピングされます。(この方法が最もポータビリティが高く、JSTLや配布されているタグライブラリはこの方法を使用している)

JSTLの場合、standard.jarファイルのMETA-INFディレクトリ内にTLDファイルがあるため、standard.jarをWEB-INF/libに置くだけでTLD参照設定の必要はありません。


◆ 補足 ◆
JSP 2.0ではweb.xmlの要素<jsp-config>の子要素として<tablib>を記述するように変更されています。
コード:

<jsp-config>
<taglib>
<taglib-uri>識別用URI</taglib-uri>
<taglib-location>TLDファイル物理パス</taglib-location>
</taglib>
</jsp-config>




[ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2004-05-18 21:37 ]
みやも
ベテラン
会議室デビュー日: 2002/04/22
投稿数: 74
投稿日時: 2004-05-18 23:21
米山さん
丁寧な回等ありがとうございます。

>WEB-INF/libにおかれたJARファイルについては、META-INFディレクトリ内のTLDファイルが検索され、同様にマッピングされます。(この方法が最もポータビリティが高く、JSTLや配布されているタグライブラリはこの方法を使用している)

なるほど。
META-INF/**.tld が読まれる仕組みなんですね。
standard.jarのMETA-INF/c-1_0.tldを見ると確かにこんな記述がありました。

<taglib>
....
<uri>http://java.sun.com/jstl/core</uri>
....

(uriはJSTL1.0の場合)



>JSP 2.0ではweb.xmlの要素<jsp-config>の子要素として<tablib>を記述するように変更されています。

一人勘違いして、JSP2.0になると、
>○ TLDファイル自体でURIマッピングを行う方法
が使えないのかと思いましたが、そうではなくて、
>○ web.xmlでURIマッピングを行う方法
の書き方の変更ってことですね。


大変助かりました。
どうもありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)