5

NetBeansを使用して静的HTMLページを用意しました。そのページを別のページにインポートして、コードを再度書き直さないようにしてから、それぞれの変更を加えることはできますか?

4

3 に答える 3

18

include次のようなディレクティブを使用して、JSP ページを別のページに組み込むことができます。

<%@ include file="/path/to/yourfile.jsp" %>

または、<jsp:include>このような標準アクションを使用して -

<jsp:include page="/path/to/yourfile.jsp"/>

yourfile.jsp上記の 2 つのアプローチのうち、最初のアプローチでは、ページの翻訳時にのコンテンツが含まれます。つまり、ページが本格的なサーブレット クラスに変換されると、のコンテンツがyourfile.jspサーブレットに含まれます。したがって、この組み込みは、アプリが起動した後の最初のユーザー リクエストでのみ発生する、ページの翻訳時に 1 回だけ発生します。

2 番目の方法を使用すると、すべてのユーザー リクエストに対して、 からの応答がyourfile.jspページ変換時ではなく実行時に含まれます。

ディレクティブを使用する場合include、基本的にはターゲット ファイルの内容をメイン ファイルにコピー アンド ペーストします。ターゲット ファイルに動的コンテンツを生成するタグまたは EL が含まれている場合、これらもメイン ファイルの一部になり、それに応じて実行され、動的コンテンツが生成されます。問題ありません。

しかし、このアプローチにはいくつかの制限があります。たとえば、 を使用してインクルードされたページはinclude、応答ステータス コードを変更したり、ヘッダーを設定したりできません。つまり、addCookies()から やその他のヘッダー設定メソッドを呼び出すことはできませんyourfile.jsp。これを行ってもエラーは発生しませんが、期待どおりの結果が得られません。使用する<jsp:include>と、これらすべてが含まれているページで実行でき、それに応じて機能します。

これら 2 つのアプローチには、もう 1 つの重要な違いがあります。含まれているページに応じて変化する、状況依存のテキストを少し含むファイルを含めたいとします。このincludeアプローチでは、これをエレガントに達成することはできません。しかし、この<jsp:include>アプローチでは、これを行うことができます -

<jsp:include page="/path/to/yourfile.jsp">
    <jsp:param name="myContextSensitiveText" value="Context Sensitive!!" />
</jsp:include>

これは、 の新しいリクエスト パラメータを指定していることを意味しyourfile.jsp、そのファイルからアクセスして、それに応じてレンダリングすることができます -

${param.myContextSensitiveText} - Context Insensitive Text!!

このincludeアプローチでは、これを達成することはできません。

どちらを使用するかは、デザインの選択に完全に依存します。

別のことを覚えておく必要があります-これらのアプローチはどちらも、ターゲットファイルの内容をメインファイルに含めますが、方法は異なります。したがって、両方に<html>または<body>のような html 要素が含まれている場合、最終的にレンダリングされたページに 2<html>つと 2 つの<body>要素が含まれることになり、これは有効ではありません。

詳細については、こちらこちらをご覧ください。

編集

JSTLを使用してページを含める 3 つ目の方法があります。importこの目的のためにJSTLタグを使用できます-

<%-- You need to declare this at the top of your jsp page--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...............
...............

<c:import url="/path/to/yourfile.jsp" />

<jsp:include>このアプローチは、少し強力であることを除けば、とまったく同じように機能します。アプリケーション ディレクトリの外部にあるページのコンテンツを含めることができます。コンテナーの外部であっても同様です。例として -

<c:import url="http://www.google.com" />

この行には、Google のホームページの HTML コンテンツが含まれます。

のように含まれているページにパラメーターを渡す必要がある場合は、タグ<jsp:include>を使用できます-param

<c:import url="/path/to/yourfile.jsp">
    <c:param name="myContextSensitiveText" value="Context Sensitive!!" />
</c:import>

同じ方法でアクセスします-

${param.myContextSensitiveText} - Context Insensitive Text!!
于 2011-08-28T16:58:16.353 に答える
0

あなたはこれらの方法でそれを行うことができます、

<%@ include file="/path/to/yourfile.jsp" %>

また

<jsp:include page="/path/to/yourfile.jsp"/>

また

 <c:import url="/path/to/yourfile.jsp" />
于 2013-01-09T16:53:00.880 に答える
0

はい、jsp ページを別の jsp にインポートできます。

      <jsp:include page="/jsp/old.jsp"/>

JSP ページへのコンテンツの組み込み

于 2011-08-28T12:36:37.573 に答える