- - PR -
web.xmlでtaglib宣言って不要ですか?
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 | ||||||||||||
|
投稿日時: 2004-05-18 21:36
みやもさん、こんにちは。米山@クロノスです。
タグライブラリを使用するにはコンテナがTLDファイルを参照できるようにしなければなりませんが、それには次のような方法があります。 ○ 直接参照する方法 JSPファイルのtaglibディレクティブで属性uriを記述する。 これは、JSPファイルからの相対パスもしくはコンテキスト・ルートからの絶対パスを直接指定する方法です。 ○ web.xmlでURIマッピングを行う方法 web.xmlファイルの<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>を記述するように変更されています。
[ メッセージ編集済み 編集者: 米山@クロノス 編集日時 2004-05-18 21:37 ] | ||||||||||||
|
投稿日時: 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
