![]() |
![]() |
|
|
| |
カスタム 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 で使用するには、次の手順に従います。
ext
ディレクトリの weblogic-tags.jar
ファイルを、WebLogic カスタム タグを使用する JSP を格納する Web アプリケーションの WEB-INF
\lib
ディレクトリにコピーします。
web.xml
の <taglib>
要素で参照します。次に例を示します。
<taglib>
<taglib-uri>weblogic-tags.tld</taglib-uri>
<taglib-location>
/WEB-INF/lib/weblogic-tags.jar
</taglib-location>
</taglib>
詳細については、「Web アプリケーションのデプロイメント記述子の記述」を参照してください。
taglib
ディレクティブを使用して、JSP 内でタグ ライブラリを参照します。次に例を示します。
<%@ taglib uri="weblogic-tags.tld" prefix="wl" %>
cache タグは、タグの本体内で行われた処理のキャッシングを有効にします。このタグは、出力(変換)データと入力(計算済み)データの両方をサポートします。出力キャッシングとは、タグ内のコードによって生成されたコンテンツを指します。入力キャッシングとは、タグ内のコードによって設定される変数の値を指します。出力キャッシングは、コンテンツの最終的な形式をキャッシュする必要がある場合に便利です。入力キャッシングは、タグ内で計算されるデータと無関係にデータ表示が変化する場合に有用です。
あるクライアントがキャッシュのコンテンツを既に再計算していて、別のクライアントが同じコンテンツを要求した場合、後から要求したクライアントは再計算の終了を待たずに、キャッシュに既にある情報をそのまま表示します。これは、キャッシュの再計算が原因で、すべてのユーザに対して Web サイトが停止してしまわないようにするためです。さらに、非同期であるということは、キャッシュの再計算を開始したユーザも含めて、誰も待たないことを意味します。
キャッシュは、キャッシング システムがシステム メモリを使いすぎないようにソフト参照を使って保存されます。
キャッシュの更新
_cache_refresh
オブジェクトを true
に設定することで、対象スコープ内で強制的にキャッシュを更新できます。セッション スコープでキャッシュを更新するには、次のように指定します。
<% request.setAttribute("_cache_refresh", "true"); %>
すべてのキャッシュを更新する場合は、キャッシュをアプリケーション scope
に設定します。ユーザ向けのすべてのキャッシュを更新する場合は、キャッシュを 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"/>
次の例では、<wl:cache>
タグの使い方を示します。
コード リスト 4-1 cache タグの使い方の例
<wl:cache>
<!--the content between these tags will only be
</wl:cache>
refreshed on server restart-->
<wl:cache key="request.ticker" timeout="1m"><!--get stock quote for whatever is in the request parameter ticker
</wl:cache>
and display it, only update it every minute--><wl:cache key="parameter.isbn" timeout="1d" size="100">
<!--incoming parameter value isbn is the number used to lookup the
book in the database--><!--retrieve the book from the database and display
</wl:cache>
the information -- the tag will cache the top 100
most accessed book descriptions-->
<wl:cache timeout="15m"><!--get the new headlines from the database every 15 minutes and
</wl:cache>
display them-->
<wl:process>
タグは、クエリ パラメータベースのフロー制御用に使用します。4 つの属性を組み合わせて使用することで、<wl:process>
タグと </wl:process>
タグに囲まれた文を選択的に実行できます。process タグは、フォームの送信結果を説明を付けて処理する場合にも使用できます。リクエスト パラメータの値を基に条件を指定することで、JSP 構文をページに含めるかどうかを指定できます。
タグ属性 |
必須 |
説明 |
---|---|---|
|
いいえ |
クエリ パラメータの名前 |
|
いいえ |
クエリ パラメータの名前 |
|
いいえ |
クエリ パラメータの値 |
|
いいえ |
クエリ パラメータの値 |
次の例では、<wl:process>
タグの使い方を示します。
コード リスト 4-2 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
</wl:process>
and the value of lastBookRead is "A Man in Full"-->
<wl:repeat>
タグは、列挙値、イテレータ、コレクション、オブジェクト配列、ベクトル、結果セット、結果セットメタデータ、およびハッシュテーブル キーなど、さまざまなタイプの集合に対して処理を繰り返す場合に使用します。また、count
属性を使用して、一定回数だけループすることもできます。Java オブジェクトのタイプを指定するには、set 属性を使用します。
次の例では、<wl:repeat>
タグの使い方を示します。
コード リスト 4-3 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>
![]() |
![]() |
![]() |