<c:import>
SYNOPSIS
説 明
URL の内容を取得します。内容はこのタグの位置に埋め込まれるか (<jsp:include> の動作と同じ)、あるいは変数の値として参照することができます。
属 性
内容を取得する URL です。絶対 URL または相対 URL で指定することが出来ます。
絶対 URL (http://www.foo.com/bar.html など) を指定した場合は
JSTL 内から通信を行って内容を取得するため効率が良くありません。絶対 URL は外部サイトの情報が必要な場合に限定して使用してください。
"../foo" や "foo/bar.html" などの相対パスでした場合、タグを記述している JSP の URL を基点とした相対パスを意味します。サーブレットの include 機能が使用されます。
/ から始まる相対 URL を指定した場合、context 属性が省略されていれば JSP が所属している Web アプリケーションルートからの位置を意味します。コンテキストの指定があればそのコンテキストの該当する URL を意味します。サーブレットの include 機能が使用されます。
いずれの形式でも URL が JSP やサーブレットなどを示している場合、その処理結果を取得することになります。
varReaderm 属性と両方とも省略した場合、URL から取得した内容はこのタグの位置に埋め込まれます。
URL から取得した内容を java.io.Reader として設定する変数の名前です。var 属性と両方とも省略した場合、URL から取得した内容はこのタグの位置に埋め込まれます。
ここで指定した変数はこのタグの内部でのみ有効です。従って
<x:parse などに Reader を渡す場合はこのタグの内部で記述します。これは Reader を確実にクローズするために範囲を限定する必要があるためです。
Jakarta Taglib 版 JSTL 1.1 実装では大きなファイルを読み込んでもこの変数のインスタンスが java.lang.StringReader でしたので、メモリの効率は期待できません。
page, request, session,
application のいずれかを指定することが出来ます。
同一サーブレットコンテナ内の別のコンテキスト (Web アプリケーション) の内容を取得したい場合に指定します。この動作は ServletContext#getContext(context).getRequestDispatcher(url).forward(request,response)
に相当します (サーブレットコンテナでクロスコンテキスト参照が許可されている必要があります)。
内 容
<jsp:include> の <jsp:param> と等価です。
使用例
foo.jsp の実行結果を埋め込んで出力します。
<c:import url="foo.jsp" />
news.xml という名前の XML ファイルを読み込んで解析し、全ての記事の内容を出力します。
<c:import varReader="newssrc" url="news.xml" charEncoding="UTF-8">
<x:parse var="news" doc="${newssrc}" />
</c:import>
<x:forEach select="$news/article">
<x:out select="@date" />: <x:out select="." /><br>
</x:forEach>
<?xml version="1.0"?>
<news>
<article date="2007/12/01">とうとう師走に入りました。寒さが空腹に染みます。</article>
<article date="2007/12/25">何もありませんでした。</article>
</news>
<@ page language="java" contentType="text/html;charset=UTF-8"> <@ taglib prefix="c" uri="http://java.sun.com/jstl/core" > <c:import url="http://www.google.co.jp" />