jsp:includeを使用してダイナミックコンテンツを制御する方法
4313 ワード
この例では、jsp:includeを使用して動的コンテンツを制御する方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
リスト1.JSP include疑似命令
includeは静的コンテンツをWebページに組み込むのに非常に適しているが,動的コンテンツについては望ましくない.この問題は、前の記事でキャッシュファイルを再読み込みしようとしたときに発見されました.ほとんどのヘッダーファイルやフッターファイルとは異なり、ダイナミックなコンテンツの変化が頻繁で、常に更新する必要があります.まず、include擬似命令の限界を要約し、jsp:includeタグを使用してJSPの組み込み能力を拡張する方法を説明します.
キャッシュの問題
JSP include疑似命令の欠点は、Webブラウザがすべてのページをキャッシュすることです.これは、フッター、著作権宣言、または静的リンクのセットなどの静的コンポーネントを処理する場合に意味があります.これらのファイルは変更されないため、JSP解釈器にデータを継続的に再ポーリングさせる理由はありません.アプリケーションのパフォーマンスが向上するため、可能な限りキャッシュを実現する必要があります.
ただし、キャッシュを行うと損をしない場合があります.Webページやデータベースドライバを使用したJSPファイルなどの動的データを使用するプログラムから抽出されたコンテンツが、時間スタンプなどの頻繁に変化するHTMLである場合でも、Webページを読み込むたびに、これらのファイルやプログラムの最新バージョンを表示する必要があります.残念なことに、JSP include擬似命令はこの機能を備えていない.テストおよび開発サイクル(サイドバー「JSPテストおよび開発」を参照)では、ブラウザでキャッシュを無効にすると、通常、この問題を解決できます.しかし、実際に使用されているアプリケーションでは、パフォーマンスは設計決定の重要な要素であり、キャッシュの無効化は長期的な計画ではありません.より良い解決策は、jsp:includeタグを使用することです.
jsp:includeタグ
jsp:includeはincludeとは異なる擬似命令にすぎない.jsp:includeの利点は、常に含まれているファイルの変化をチェックすることです.後でこの新しいタグの働き方を検討します.しかし、まず2つのincludeのそれぞれのコードを見て、両者の間の異同を見ることができます.
インベントリ2には、元のJSP include擬似命令を使用した簡単なページが表示されます.
リスト2.JSP include疑似命令
リスト3は同じページですが、ここではjsp:includeタグを使用するように変わります.
インベントリ3.jsp:includeの使用に移行
この2つのコードタイプの違いに注意してください.まず、jsp:include要素はinclude擬似命令に属する%@構文を使用しません.実際、jsp接頭辞はJSPコンパイラに、標準的なJSPタグセットの要素を探すべきであることを知らせます.次に、含めるファイルのプロパティをfileからpageに変更することを指定します.よろしければ、新しいタグの結果を自分でテストしてもいいです.前の記事(参考資料を参照)のincluded.htmlファイルの内容を変更し、ブラウザページを再読み込みするだけで、すぐに新しい内容が表示されます.
jsp:includeがどのように動作するか
根掘り葉掘り聞くのが好きな場合は、jsp:includeタグの動作がinclude擬似命令と異なる理由を知りたいかもしれません.道理は実はとても簡単です:jsp:includeはURI自身ではなくURIを含む応答を含んでいます.これは,指摘されたURIを解釈し,生成された応答を含むことを意味する.ページがHTMLであれば、少しも変わっていないHTMLが得られます.ただし,Perlスクリプト,Java servletあるいはCGIプログラムであれば,そのプログラムから解釈した結果となる.ページは通常HTMLですが、実際のプログラムは目的を達成する手段です.また,ページを要求するたびに解釈が行われるため,include擬似命令を用いた場合のように結果をキャッシュすることは一度もなかった.これは小さな変動にすぎませんが、あなたが見ている行為のすべての違いを招きます.
ハイブリッドソリューション
include擬似命令は、一部のサイトで使用される場所があります.たとえば、サイトに変更がある場合、ほとんど変更されていないヘッダー、フッター、ナビゲーションファイルが含まれている場合、基本的なinclude擬似命令はこれらのコンポーネントの最適なオプションです.includeダミー命令はキャッシュを採用しているため、一度ファイルを入れるだけでコンテンツがキャッシュされ、その結果、サイトのパフォーマンスが大幅に向上します.
しかし、現在の多くのWebアプリケーションやサイトでは、カーペット型のキャッシュでは問題を解決できません.ヘッダーとフッターは静的である可能性がありますが、サイト全体が静的である可能性はありません.例えば、ナビゲーションリンクをデータベースから抽出することは一般的であり、JSP技術に基づく多くのサイトは、他のサイトまたはアプリケーション上の動的JSPページからコンテンツを抽出する.動的コンテンツを処理している場合は、jsp:includeを使用してコンテンツを処理する必要があります.
もちろん、最良の解決策は、この2つの方法をよく混合して使用し、各構造を最も適切な場所に使用することです.インベントリ4は、ハイブリッドコーディネートに含まれるソリューションの一例である.
インベントリ4.ハイブリッドソリューション
上記のコードには、前の文書のインデックスページの例が表示されます.ナビゲーションリンクとフッターは静的な内容で、年に1回まで変更されます.これらのファイルに対してinclude擬似命令を使用しました.コンテンツ・ペインには、動的に生成されたWeblogコンポーネントとbookshelfコンポーネントが含まれています.この2つのコンポーネントは常に更新する必要があるので、jsp:includeタグを使用しました.header.jspファイルはちょっとおかしいです.このコンポーネントは本質的に静的JSPページから抽出される.ただし、注意するように、ページを含む「スローガン」を抽出して表示します.この共有情報を処理するには、ヘッダーファイルにパラメータを入力する必要があります.それらのパラメータを処理するには、jsp:include要素を使用する必要があります.
本文で述べたことは皆さんのjspプログラム設計に役立つことを望んでいます.
リスト1.JSP include疑似命令
newInstance.com
]]>
includeは静的コンテンツをWebページに組み込むのに非常に適しているが,動的コンテンツについては望ましくない.この問題は、前の記事でキャッシュファイルを再読み込みしようとしたときに発見されました.ほとんどのヘッダーファイルやフッターファイルとは異なり、ダイナミックなコンテンツの変化が頻繁で、常に更新する必要があります.まず、include擬似命令の限界を要約し、jsp:includeタグを使用してJSPの組み込み能力を拡張する方法を説明します.
キャッシュの問題
JSP include疑似命令の欠点は、Webブラウザがすべてのページをキャッシュすることです.これは、フッター、著作権宣言、または静的リンクのセットなどの静的コンポーネントを処理する場合に意味があります.これらのファイルは変更されないため、JSP解釈器にデータを継続的に再ポーリングさせる理由はありません.アプリケーションのパフォーマンスが向上するため、可能な限りキャッシュを実現する必要があります.
ただし、キャッシュを行うと損をしない場合があります.Webページやデータベースドライバを使用したJSPファイルなどの動的データを使用するプログラムから抽出されたコンテンツが、時間スタンプなどの頻繁に変化するHTMLである場合でも、Webページを読み込むたびに、これらのファイルやプログラムの最新バージョンを表示する必要があります.残念なことに、JSP include擬似命令はこの機能を備えていない.テストおよび開発サイクル(サイドバー「JSPテストおよび開発」を参照)では、ブラウザでキャッシュを無効にすると、通常、この問題を解決できます.しかし、実際に使用されているアプリケーションでは、パフォーマンスは設計決定の重要な要素であり、キャッシュの無効化は長期的な計画ではありません.より良い解決策は、jsp:includeタグを使用することです.
jsp:includeタグ
jsp:includeはincludeとは異なる擬似命令にすぎない.jsp:includeの利点は、常に含まれているファイルの変化をチェックすることです.後でこの新しいタグの働き方を検討します.しかし、まず2つのincludeのそれぞれのコードを見て、両者の間の異同を見ることができます.
インベントリ2には、元のJSP include擬似命令を使用した簡単なページが表示されます.
リスト2.JSP include疑似命令
JSP include element test
This content is statically in the main JSP file.
]]>
リスト3は同じページですが、ここではjsp:includeタグを使用するように変わります.
インベントリ3.jsp:includeの使用に移行
JSP include element test
This content is statically in the main JSP file.
]]>
この2つのコードタイプの違いに注意してください.まず、jsp:include要素はinclude擬似命令に属する%@構文を使用しません.実際、jsp接頭辞はJSPコンパイラに、標準的なJSPタグセットの要素を探すべきであることを知らせます.次に、含めるファイルのプロパティをfileからpageに変更することを指定します.よろしければ、新しいタグの結果を自分でテストしてもいいです.前の記事(参考資料を参照)のincluded.htmlファイルの内容を変更し、ブラウザページを再読み込みするだけで、すぐに新しい内容が表示されます.
jsp:includeがどのように動作するか
根掘り葉掘り聞くのが好きな場合は、jsp:includeタグの動作がinclude擬似命令と異なる理由を知りたいかもしれません.道理は実はとても簡単です:jsp:includeはURI自身ではなくURIを含む応答を含んでいます.これは,指摘されたURIを解釈し,生成された応答を含むことを意味する.ページがHTMLであれば、少しも変わっていないHTMLが得られます.ただし,Perlスクリプト,Java servletあるいはCGIプログラムであれば,そのプログラムから解釈した結果となる.ページは通常HTMLですが、実際のプログラムは目的を達成する手段です.また,ページを要求するたびに解釈が行われるため,include擬似命令を用いた場合のように結果をキャッシュすることは一度もなかった.これは小さな変動にすぎませんが、あなたが見ている行為のすべての違いを招きます.
ハイブリッドソリューション
include擬似命令は、一部のサイトで使用される場所があります.たとえば、サイトに変更がある場合、ほとんど変更されていないヘッダー、フッター、ナビゲーションファイルが含まれている場合、基本的なinclude擬似命令はこれらのコンポーネントの最適なオプションです.includeダミー命令はキャッシュを採用しているため、一度ファイルを入れるだけでコンテンツがキャッシュされ、その結果、サイトのパフォーマンスが大幅に向上します.
しかし、現在の多くのWebアプリケーションやサイトでは、カーペット型のキャッシュでは問題を解決できません.ヘッダーとフッターは静的である可能性がありますが、サイト全体が静的である可能性はありません.例えば、ナビゲーションリンクをデータベースから抽出することは一般的であり、JSP技術に基づく多くのサイトは、他のサイトまたはアプリケーション上の動的JSPページからコンテンツを抽出する.動的コンテンツを処理している場合は、jsp:includeを使用してコンテンツを処理する必要があります.
もちろん、最良の解決策は、この2つの方法をよく混合して使用し、各構造を最も適切な場所に使用することです.インベントリ4は、ハイブリッドコーディネートに含まれるソリューションの一例である.
インベントリ4.ハイブリッドソリューション
newInstance.com
]]>
上記のコードには、前の文書のインデックスページの例が表示されます.ナビゲーションリンクとフッターは静的な内容で、年に1回まで変更されます.これらのファイルに対してinclude擬似命令を使用しました.コンテンツ・ペインには、動的に生成されたWeblogコンポーネントとbookshelfコンポーネントが含まれています.この2つのコンポーネントは常に更新する必要があるので、jsp:includeタグを使用しました.header.jspファイルはちょっとおかしいです.このコンポーネントは本質的に静的JSPページから抽出される.ただし、注意するように、ページを含む「スローガン」を抽出して表示します.この共有情報を処理するには、ヘッダーファイルにパラメータを入力する必要があります.それらのパラメータを処理するには、jsp:include要素を使用する必要があります.
本文で述べたことは皆さんのjspプログラム設計に役立つことを望んでいます.