Oracle® Fusion Middleware Oracle WebLogic Server Web アプリケーション、サーブレット、JSP の開発 11g リリース 1 (10.3.1) B55521-01 |
|
戻る |
次へ |
以下の節では、WebLogic Server 配布キットで提供される 3 つのカスタム JSP タグ (cache
タグ、repeat
タグ、process
タグ) の使い方について説明します。
Oracle では、JSP ページで使用できる特殊な JSP タグとして、cache
、repeat
、および process
の 3 つを提供しています。これらのタグは、weblogic-tags.jar
というタグ ライブラリ jar ファイルにパッケージされています。この jar ファイルには、タグのクラスとタグ ライブラリ記述子 (TLD) が含まれています。これらのタグを使用するには、JSP を格納する Web アプリケーションにこの jar ファイルをコピーして、タグ ライブラリを JSP で参照します。
WebLogic カスタム タグを使用するには、タグを Web アプリケーションに入れる必要があります。
これらのタグを JSP で使用するには、次の手順に従います。
WebLogic Server の ext
ディレクトリの weblogic-tags.jar
ファイルを、WebLogic カスタム タグを使用する JSP が格納されている Web アプリケーションの WEB-INF/lib
ディレクトリにコピーします。
このタグ ライブラリ記述子を、J2EE 標準 Web アプリケーション デプロイメント記述子 (web.xml
) の <taglib>
要素で参照します。次に例を示します。
<taglib> <taglib-uri>weblogic-tags.tld</taglib-uri> <taglib-location> /WEB-INF/lib/weblogic-tags.jar </taglib-location> </taglib>
taglib
ディレクティブを使用して、JSP 内でタグ ライブラリを参照します。次に例を示します。
<%@ taglib uri="weblogic-tags.tld" prefix="wl" %>
cache タグは、タグの本体内で行われた処理のキャッシングを有効にします。このタグは、出力 (変換) データと入力 (計算済み) データの両方をサポートします。出力キャッシングとは、タグ内のコードによって生成されたコンテンツを指します。入力キャッシングとは、タグ内のコードによって設定される変数の値を指します。出力キャッシングは、コンテンツの最終的な形式をキャッシュする必要がある場合に便利です。入力キャッシングは、タグ内で計算されるデータと無関係にデータ表示が変化する場合に有用です。
あるクライアントがキャッシュのコンテンツを再計算しているときに、別のクライアントが同じコンテンツを要求した場合には、再計算の完了を待つことなく、すでにキャッシュ内にある情報が表示されます。これは、キャッシュの再計算が原因で、すべてのユーザに対して Web サイトが停止することを回避するための仕組みです。さらに、async 属性を使用して、すべてのユーザ (キャッシュの再計算を開始したユーザも含む) に対して再計算の完了を待たないことを指定できます。
2 つのバージョンの cache タグを使用できます。バージョン 2 にはスコープが追加されています。
_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>
キャッシュされたテーブル データを更新します。
空タグ (/
で終了し、終了タグを使用しない) で flush
属性を使用して、キャッシュをフラッシュします。次に例を示します。
<wl:cache name="dbtable" key="parameter.tablename" scope="application" flush="true"/>
表 16-1 cache タグの属性
属性 | 必須 | デフォルト値 | 説明 |
---|---|---|---|
timeout |
いいえ |
|
キャッシュ タイムアウト プロパティ。cache タグ内の文が更新されるまでの時間 (秒単位)。この属性はプロアクティブではなく、この値は要求時にのみリフレッシュされる。秒単位より時間単位の方がよい場合は、使用する単位を値の後に付けて指定できる。
|
scope |
いいえ |
application |
データをキャッシュするスコープを指定する。有効なスコープは次のとおり。
|
scope (続き) |
ほとんどのキャッシュは、session または application スコープになる。 |
||
key |
いいえ |
-- |
タグ内に格納されている値をキャッシュするかどうかを評価する際に使用する値を指定する。通常、ある特定のキャッシュは、 キーのリストはカンマで区切る。この属性の値はキーとしてキャッシュに入れる値を持つ変数の名前となる。スコープ名を名前の前に付加することで、さらにスコープを指定できる。次に例を示す。 parameter.key | page.key | request.key | application.key | session.key デフォルトでは、上のリストの順でスコープ内を検索する。名前を付けた各キーは、cache タグ内でスクリプト変数として使用可能となる。キーのリストはカンマで区切る。 |
async |
いいえ |
false |
|
name |
いいえ |
-- |
複数の JSP ページ間でキャッシュを共有可能とするユニークなキャッシュの名前。同じバッファが、名前を付けたキャッシュを使用するすべてのページのデータを格納するために使用される。この属性は、キャッシュを共有する必要があり、本文をインクルードされるページで有用。この属性が設定されていない場合、ユニークな名前がキャッシュに割り当てられる。
システムで名前が指定されているキャッシュは、自動的にフラッシュして更新することはできない。 |
size |
いいえ |
|
キーを使用するキャッシュごとに許可されるエントリの数。デフォルトでは、キーのキャッシュを制限しない。キーの数を制限すると、タグはキャッシュに指示するために最小使用頻度方式 (least-used system) を使用する。使用中のキャッシュの size 属性の値を変更しても、そのキャッシュのサイズは変わらない。 |
vars |
いいえ |
|
変換されたキャッシュの出力をキャッシュするだけでなく、算出された値もブロック内にキャッシュできる。これらの変数はキャッシュ キーと正確に同じように指定する。このタイプのキャッシュを入力キャッシュという。 入力キャッシングを実行するために変数が使用される。キャッシュ取得時に変数は指定したスコープに復元される。たとえば、データベースから結果を取得するために、要求パラメータの var1 およびセッションの var2 を使用したとする。キャッシュ作成時、これらの変数の値がキャッシュに格納される。次回のキャッシュへのアクセス時、これらの値が復元されるため、個々の値のスコープからアクセスが可能。たとえば、var1 は要求から、var2 はセッションから取得できる。 |
flush |
いいえ |
なし |
true に設定すると、キャッシュがフラッシュされる。この属性は、空タグ (/ で終了) 内で設定する必要がある。 |
バージョン 2 のキャッシュ システムの追加プロパティ
各キャッシュには、キャッシュに関連付けられる任意の属性が追加されている。そうした属性はエンド ユーザによる操作が可能であり、キャッシュ取得時に指定できます。
キャッシュ システムの任意のスコープにある java.util.List
の「weblogicx.cache.CacheListener
」キーに、weblogicx.cache.CacheListener
を実装するオブジェクトを配置して、キャッシュのリスナを登録できる。スコープ内に List
がある場合は、その末尾にリスナを追加します。
次の例では、<wl:cache>
タグの使い方を示します。
コード リスト 16-1 cache タグの使い方の例
<wl:cache> <!-- このタグに囲まれたコンテンツはサーバが再起動するときにのみ更新される --> </wl:cache> <wl:cache key="request.ticker" timeout="1m"> <!-- 要求パラメータ ticker にあるものの株価を取得して表示し、毎分それを更新する --> </wl:cache> <!-- 受信するパラメータ値 isbn は、データベース内の本のルックアップに使用される番号 --> <wl:cache key="parameter.isbn" timeout="1d" size="100"> <!-- データベースから本を取得し、情報を表示する -- このタグはアクセスの多かった上位 100 冊の説明をキャッシュする --> </wl:cache> <wl:cache timeout="15m" async="true"> <!-- 15 分おきにデータベースから新しいヘッドラインを取得し、表示する --> <!-- ヘッドラインの取得中の一時停止がユーザには分からないようにする --> </wl:cache>
<wl:process>
タグは、クエリ パラメータベースのフロー制御用に使用します。このタグの 4 つの属性を組み合わせて使用することで、<wl:process>
タグと </wl:process>
タグに囲まれた文を選択的に実行できます。process タグは、フォームの送信結果を説明を付けて処理する場合にも使用できます。要求パラメータの値を基に条件を指定することで、JSP 構文をページに含めるかどうかを指定できます。
表 16-2 process タグの属性
タグ属性 | 必須 | 説明 |
---|---|---|
name |
いいえ |
クエリ パラメータの名前 |
notname |
いいえ |
クエリ パラメータの名前 |
value |
いいえ |
クエリ パラメータの値 |
notvalue |
いいえ |
クエリ パラメータの値 |
次の例では、<wl:process>
タグの使い方を示します。
コード リスト 16-2 process タグの使い方の例
<wl:process notname="update"> <wl:process notname="delete"> <!-- パラメータの更新も削除もない場合にのみ表示する --> <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"> <!-- 更新を行う --> </wl:process> <wl:process name="delete"> <!-- 削除を行う --> </wl:process> <wl:process name="lastBookRead" value="A Man in Full"> <!-- コードのこのセクションは、lastBookRead が存在し、lastBookRead の値が「A Man in Full」の場合に実行される --> </wl:process>
<wl:repeat>
タグは、列挙値、イテレータ、コレクション、オブジェクト配列、ベクトル、結果セット、結果セットメタデータ、およびハッシュテーブル キーなど、さまざまなタイプの集合に対して処理を繰り返す場合に使用します。また、count
属性を使用して、一定回数だけループすることもできます。Java オブジェクトのタイプを指定するには、set 属性を使用します。
表 16-3 repeat タグの属性
タグ属性 | 必須 | タイプ | 説明 |
---|---|---|---|
set |
いいえ |
Object |
以下を含むオブジェクトの集合。
|
count |
いいえ |
Int |
集合内で最初の count エントリに対して処理を繰り返す。 |
id |
いいえ |
String |
反復処理の対象となる現在のオブジェクトを格納する変数。 |
type |
いいえ |
String |
渡された集合に対して処理を繰り返して得られるオブジェクトの型。デフォルトは |
次の例では、<wl:repeat>
タグの使い方を示します。