両方のタグには、あるページのコンテンツが別のページに含まれています。<jsp:include page = ...>と<%@ include file = ...>の違いは何ですか?
正確な違いは、これらの2つのタグの間のとは何ですか?
両方のタグには、あるページのコンテンツが別のページに含まれています。<jsp:include page = ...>と<%@ include file = ...>の違いは何ですか?
正確な違いは、これらの2つのタグの間のとは何ですか?
jGuru:インクルードファイルのテキストに引っ張り、それ を含むファイルの一部であるかのようにそれをコンパイルC "#include"
、 等
<%@include file="abc.jsp"%>
指令働きます。インクルードファイルは、任意のタイプの (HTMLまたはテキストを含む)にすることができます。< JSPは:>タグは別々の JSPファイルなどのファイルをコンパイルし、コンパイル済みのJSPで、それへの呼び出しを埋め込む「abc.jsp」=ページがあります。
一部のJSPエンジンは、非標準タグ
<!--#include file="data.inc"-->
(NCSA-、または.shtmlのスタイル)と<%@ vinclude="data.inc" %>
(JRunのスタイルを)サポートしていますが、これらは JSP仕様で定義されていないので、あてにすることはできません。この質問はJSPのよくある質問を参照してください。
1つは静的インポート(<%= @ include ...> ")、もう1つは動的なもの(jsp:include)です。 Googleの小さなリサーチで詳しく説明しています。
言われたように、<%@ include
は静的なインクルードで、<jsp:include
は動的なインクルードです。静的なインクルードは、<%@ include
ステートメントの場所にインクルードされたファイル( "コード")の正確な内容をコピーして貼り付けるのとまったく同じものです(これらの用語に精通している場合) (これはまさにJSPコンパイラがやることです。
は、動的には指示されたページを実行し、その後<jsp:include
の文の代わりに、呼び出しページの出力中のページからの出力が含まれます要求(リクエストディスパッチャを使用して)を作成します含まれています。
ここで大きな違いは、動的インクルードでは、インクルードされたページが独自のpageContextで実行されることです。また、リクエストであるため、他のリクエストとともにパラメータを送信するのと同じ方法で、ページにパラメータを送信できます。一方、静的なインクルードは、呼び出しページのコンテキスト内で実行される単なるコードです。あなたは静的に複数回同じファイルを含める場合は、同じ変数を宣言することはできませんので、
<%
int i = 0;
%>
のようなものは、(コンパイラエラーを生成するので、そのファイル内のコードは、呼び出しページに複数の場所に存在しています一回以上)。 Iディレクティブ<%@include file="reuse.html"%>
を使用し、第二に、私はタグ<jsp:include page="reuse.html" />
を使用するコードの再利用可能な部品で
。
<html>
<head>
<title>reusable</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<img src="candle.gif" height="100" width="50"/> <br />
<p><b>As the candle burns,so do I</b></p>
</body>
JSPファイルの両方を実行した後、あなたが同じ出力を参照してディレクティブとの間に違いがあった場合を考える:
してみましょう、再利用可能なファイル内のコードがあることタグ。しかし、あなたは2つのJSPファイルの生成servlet
を見れば、あなたが表示されますdifference.Hereあなたはdirective
使用するときに表示されるものです。
out.write("<html>\r\n");
out.write(" <head>\r\n");
out.write(" <title>reusable</title>\r\n");
out.write(" <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write(" </head>\r\n");
out.write(" <body>\r\n");
out.write(" <img src=\"candle.gif\" height=\"100\" width=\"50\"/> <br />\r\n");
out.write(" <p><b>As the candle burns,so do I</b></p>\r\n");
out.write(" </body>\r\n");
out.write("</html>\r\n");
を、これはあなたが使用したタグのために表示されるものです二JSPファイルで:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "reusable.html", out, false);
は、だから今は、includeディレクティブは、変換時にreuse.html
のソースを挿入しますが、アクションタグは、実行時にreuse.htmlの応答を挿入することを知っています。
あなたが考えていると、すべてのアクションタグ(jsp:include file
)でさらにパフォーマンスが低下します。つまり、常に最新のコンテンツを保有することが保証されますが、パフォーマンスの向上につながります。
1)を使用する場合は、ディレクティブを使用しますか?
は、ディレクティブが使用されているが含ま機構を含む、Webアプリケーションの複数のJSPの間で同じ出力のロジックの重複を防ぐために、すなわち使用されている。、プレゼンテーションロジックの再利用性を促進するために<%@ include file="abc.jsp" %>
時には、上記の命令をjspエンジンが受信すると、abc.jspのソースコードを取得し、現在のJSPで同じインラインをコピーします。翻訳をコピーした後
は、単にエンジンすなわちJSPに静的な命令であると言って、現在のページのために行われる。を使用する場合は、「abc.jsp」の全ソースコード)
2現在のページにコピーされますアクションを含める?
は、タグではなく、含まれるページによって実行時に生成される出力は
がタグ機能を含む現在のページ応答に含まれている現在のページに含まれるページのソースコードを含まない含むものと同様です
は、タグを含め、サーブレットプログラミングの要求ディスパッチャのメカニズムを含むエンジンすなわちJSPに実行時の命令である。むしろ、メソッド呼び出しが行われ、現在のページにコード全体をコピーし、現在のページ
すばらしい説明! 翻訳時(静的) ディレクティブ<%@ include file = "file.jsp"%> OR
どの出力をどの出力に出力するかを具体的に指定できますか? 2番目のinclude is usingディレクティブ(@include)について述べました。最初の出力結果では、使用したディレクティブ(@include)について言及しましたが、2番目の出力結果では2番目のインクルード(これは、以前の説明の@include)からのものです。 – stack247
非常に良い説明... + 1と親指 –
誰かがこの回答で混乱している場合、 '
eis