NetBeansを使用して静的HTMLページを用意しました。そのページを別のページにインポートして、コードを再度書き直さないようにしてから、それぞれの変更を加えることはできますか?
3 に答える
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!!
あなたはこれらの方法でそれを行うことができます、
<%@ include file="/path/to/yourfile.jsp" %>
また
<jsp:include page="/path/to/yourfile.jsp"/>
また
<c:import url="/path/to/yourfile.jsp" />