JSTLコア・ライブラリ - <c:url>タグ

 適切なリライティング・ルールが適用されたURLを作成します。

構文

構文1: ボディ・コンテンツなし

<c:url value=”value” [context=”context ”]
   [var=”varName”] [scope=”{page|request|session|application}”]>

構文2: ボディ・コンテンツに問合せ文字列パラメータを指定

<c:url value=”value” [context=”context ”]
   [var=”varName”] [scope=”{page|request|session|application}”]>
<c:param> subtags
</c:url>

属性

value
処理されるURL。
context
外部コンテキストに属する相対URLリソースを指定する際のコンテキストの名前。
var
処理されるURLを格納するエクスポート・スコープ変数の名前。スコープ変数の型はStringです。
scope
varのスコープ。

説明

<c:url>はURLを処理し、必要に応じてリライトします。リライトされるのは相対URLのみです。外部URLがリライトされセッションIDが公開されてしまう状況を避けるために、絶対URLはリライトされません。したがって、クライアント開発者がセッションを追跡する場合は、<c:url>で相対URLのみを使用し、ローカル・リソースにリンクする必要があります。

リライトは、サーブレットAPIのencodeURL()メソッドをコールして実行する必要があります。

エンコードする必要のある文字(空白など)がURLに含まれている場合は、ユーザーがエンコードを行ってください。

URLは、スキームで始まる絶対URL(「http://server/context/page.jsp」など)またはJSP.2.2.1「相対URL仕様」のJSP 1.2で定義された相対URLのいずれかである必要があります。結果として、こうしたURLをクライアント・ブラウザで正しく解釈されるように、実装により、URLの先頭にスラッシュで始まるコンテキスト・パス(「/page2.jsp」など)が追加される必要があります。

context属性を使用すれば、外部コンテキストのURLを指定できます。指定するURLは、/で始める必要があります(コンテキスト相対URLのため)。コンテキスト名も/で始める必要があります(これはコンテキストを識別するための標準的な方法です)。

このアクションで作成したURLはパス・パラメータとしてセッション情報を含んでいるため、サーブレットAPIのRequestDispatcherで使用すると、失敗する可能性があります。したがって、リライトされたURLのコンシューマは、RequestDispatcherをコールする前にセッションID情報を削除する必要があります。この問題は、<c:import>で適切に処理できます。

デフォルトでは、現在のJspWriterにURL処理の結果が書き込まれます。var属性およびscope属性で定義したJSPスコープ変数として結果をエクスポートすることも可能です。

<c:param>サブタグを<c:url>のボディに指定して、URL問合せ文字列パラメータに追加することもできます。この場合、URL問合せ文字列パラメータは必要に応じて正しくエンコードされます。

注意: JSTL 1.1では、Java Servlet 2.4およびJavaServer Pages 2.0の仕様をサポートするJSPコンテナが必要です。JSTL 1.0仕様の実装には、Java Servlet 2.3およびJavaServer Pages 1.2の仕様をサポートするJSPコンテナが必要です。

JSTLタグの状況依存ヘルプを提供するため、JSTLタグ・ライブラリのドキュメントがApache Software Foundation(http://www.apache.org/)で作成され、JDeveloperに含まれています。また、JSTLタグおよび属性の説明を含む『JavaServer Pages Standard Tag Library 1.0 and 1.1 Specifications』を次のWebサイトからダウンロードできます。

http://www.jcp.org/aboutJava/communityprocess/final/jsr052/index2.html

JSTLの詳細は、次の外部リファレンスを参照してください。

『Java Sun JSTL Resources』ページ:
http://java.sun.com/products/jsp/jstl/

 

JDeveloperのJSTLタグ・ライブラリについて
リファレンス: JavaServer Pages標準タグ・ライブラリ(JSTL)