BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic JSP プログラマーズ ガイド > カスタム WebLogic JSP タグ (cache、process、repeat) の使い方 |
WebLogic JSP プログラマーズ ガイド
|
カスタム WebLogic JSP タグ (cache、process、repeat) の使い方
以下の節では、WebLogic Server 配布キットで提供される 3 つのカスタム JSP タグ (cache タグ、repeat タグ、process タグ) の使い方について説明します。
BEA では、JSP ページで使用できる 3 つの特殊な JSP タグを提供しています。これらは、cache、repeat、および process です。これらのタグは、weblogic-tags.jar というタグ ライブラリ jar ファイルにパッケージ化されています。この jar ファイルには、タグのクラスとタグ ライブラリ記述子 (TLD) が含まれています。これらのタグを使用するには、JSP を格納する Web アプリケーションにこの jar ファイルをコピーして、タグ ライブラリを JSP で参照します。
Web アプリケーションでの WebLogic カスタム タグの使い方
WebLogic カスタム タグを使うには、タグを Web アプリケーションに入れる必要があります。詳細については、『Web アプリケーションのアセンブルとコンフィグレーション』を参照してください。
これらのタグを JSP で使用するには、次の手順に従います。
<taglib>
<taglib-uri>weblogic-tags.tld</taglib-uri>
<taglib-location>
/WEB-INF/lib/weblogic-tags.jar
</taglib-location>
</taglib>
詳細については、「Web アプリケーションのデプロイメント記述子の記述」を参照してください。
<%@ taglib uri="weblogic-tags.tld" prefix="wl" %>
cache タグは、タグの本体内で行われた処理のキャッシングを有効にします。このタグは、出力 (変換) データと入力 (計算済み) データの両方をサポートします。出力キャッシングとは、タグ内のコードによって生成されたコンテンツを指します。入力キャッシングとは、タグ内のコードによって設定される変数の値を指します。出力キャッシングは、コンテンツの最終的な形式をキャッシュする必要がある場合に便利です。入力キャッシングは、タグ内で計算されるデータと無関係にデータ表示が変化する場合に有用です。
あるクライアントがキャッシュのコンテンツを再計算しているときに、別のクライアントが同じコンテンツを要求した場合には、再計算の完了を待つことなく、すでにキャッシュ内にある情報が表示されます。これは、キャッシュの再計算が原因で、すべてのユーザに対して Web サイトが停止することを回避するための仕組みです。さらに、async 属性を使用して、すべてのユーザ (キャッシュの再計算を開始したユーザも含む) に対して再計算の完了を待たないことを指定できます。
キャッシュは、キャッシング システムがシステム メモリを使いすぎないようにソフト参照を使って保存されます。ただし、HotSpot VM と Classic VM との間で互換性がないために、WebLogic Server が HotSpot VM 内で動作しているときは、ソフト参照が使用されません。
_cache_refresh オブジェクトを true に設定することで、対象スコープ内で強制的にキャッシュを更新できます。セッション スコープでキャッシュを更新するには、次のように指定します。
<% request.setAttribute("_cache_refresh", "true"); %>
すべてのキャッシュを更新する場合は、キャッシュを application スコープに設定します。ユーザ向けのすべてのキャッシュを更新する場合は、キャッシュを session スコープに入れます。現在のリクエスト内のすべてのキャッシュを更新する場合は、_cache_refresh オブジェクトをパラメータとして設定するか、リクエスト内に設定します。
<wl:cache> タグは、表示されるたびに更新する必要のあるコンテンツを指定します。<wl:cache> タグと </wl:cache> タグで囲まれた文は、キャッシュが期限切れになるか、key 属性値 (表「cache タグの属性」を参照) が変更された場合にのみ実行されます。
キャッシュをフラッシュするとキャッシュされた値が強制的に消去され、次にキャッシュがアクセスされたときに値が再計算されます。キャッシュをフラッシュするには、flush 属性を true に設定します。キャッシュには、name 属性を使用して名前を付ける必要があります。キャッシュに size 属性が設定されている場合は、すべての値がフラッシュされます。キャッシュに key 属性が設定されていて size 属性が設定されていない場合は、キャッシュをユニークに識別するために必要なその他の属性 (scope や vars など) とともにその key 属性を指定すると、特定のキャッシュをフラッシュできます。
<wl:cache name="dbtable" key="parameter.tablename"
scope="application">
//テーブルを読み込み、ページに出力する
</wl:cache>
<wl:cache name="dbtable" key="parameter.tablename" scope="application" flush="true"/>
<wl:cache>
<!--the content between these tags will only be
refreshed on server restart-->
</wl:cache>
<wl:cache key="request.ticker" timeout="1m">
<!--get stock quote for whatever is in the request parameter ticker
and display it, only update it every minute-->
</wl:cache>
<!--incoming parameter value isbn is the number used to lookup the
book in the database-->
<wl:cache key="parameter.isbn" timeout="1d" size="100">
<!--retrieve the book from the database and display
the information -- the tag will cache the top 100
most accessed book descriptions-->
</wl:cache>
<wl:cache timeout="15m" async="true">
<!--get the new headlines from the database every 15 minutes and
display them-->
<!--do not let anyone see the pause while they are retrieved-->
</wl:cache>
<wl:process> タグは、クエリ パラメータベースのフロー制御用に使用します。4 つの属性を組み合わせて使用することで、<wl:process> タグと </wl:process> タグに囲まれた文を選択的に実行できます。process タグは、フォームの送信結果を説明を付けて処理する場合にも使用できます。リクエスト パラメータの値を基に条件を指定することで、JSP 構文をページに含めるかどうかを指定できます。
次の例では、<wl:process> タグの使い方を示します。
<wl:process notname="update">
<wl:process notname="delete">
<!--Only show this if there is no update or delete parameter-->
<form action="<%= request.getRequestURI() %>">
<input type="text" name="name"/>
<input type="submit" name="update" value="Update"/>
<input type="submit" name="delete" value="Delete"/>
</form>
</wl:process>
</wl:process>
<wl:process name="update">
<!-- do the update -->
</wl:process>
<wl:process name="delete">
<!--do the delete-->
</wl:process>
<wl:process name="lastBookRead" value="A Man in Full">
<!--this section of code will be executed if lastBookRead exists
and the value of lastBookRead is "A Man in Full"-->
</wl:process>
<wl:repeat> タグは、列挙値、イテレータ、コレクション、オブジェクト配列、ベクトル、結果セット、結果セットメタデータ、およびハッシュテーブル キーなど、さまざまなタイプの集合に対して処理を繰り返す場合に使用します。また、count 属性を使用して、一定回数だけループすることもできます。Java オブジェクトのタイプを指定するには、set 属性を使用します。
次の例では、<wl:repeat> タグの使い方を示します。
<wl:repeat id="name" set="<%= new String[] { "sam", "fred", "ed" } %>">
<%= name %>
</wl:repeat>
<% Vector v = new Vector();%>
<!--add to the vector-->
<wl:repeat id="item" set="<%= v.elements() %>">
<!--print each element-->
</wl:repeat>
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |