目次へ

9. Logicタグライブラリ2

9.1. matchタグ/notMatchタグ

matchタグ/notMatchタグは、クッキー/HTTPヘッダー/HTTPリクエスト値/Java Beanのプロパティ値が指定した文字列を含んでいるかどうか判定するタグです。matchタグは含んでいた場合にタグのボディ部を処理し、notMatchタグは含んでいなかった場合に処理します。まず以下の属性を指定し、比較対象を特定します。

属性名 必須 スクリプト
可能
説明

name

 

Java Beanをスコープから検索するためのキー。property属性が省略された場合には、この値で検索されたJava Beanが比較対象となります。

property

  比較対象となるJava Beanのプロパティ。
scope   Java Beanが存在するスコープを指定。指定しなかった場合は、全てのスコープから検索されます。
cookie   比較対象となるクッキーのパラメータ名。

parameter

  比較対象となるHTTPリクエストのパラメータ名。
header   比較対象となるHTTPヘッダーのパラメータ名。

文字列の指定はvalue属性で行います。またlocation属性で、指定した文字列が含まれなければならない位置を指定する事も可能です。

属性名 必須 スクリプト
可能
説明

value

文字列を指定。

location  

「start」を指定した場合は、指定した文字列は先頭に表れなければならない。
「end」を指定した場合は、文字列は最後に表れなければならない。
省略した場合は、文字列はどこに現れても構わない。

以下はlocation属性による違いを示した例です。

...
<logic:match header="Host" value="techscore">
  Host is ...techscore...
</logic:match><br>
<logic:match header="Host" value="techscore" location="start">
  Host is techscore...
</logic:match><br>
<logic:match header="Host" value="techscore" location="end">
  Host is ...techscore
</logic:match>
...

このサイトは「www.techscore.com」ですので、一番目のタグだけが実行され、

  Host is ...techscore... <br>
<br>
<br>

と出力されます。

ところでmatchタグもnotMatchタグも、いずれも比較対象となる値が存在する事を前提としています。存在しない場合には実行時にエラーが発生します。例えば上の例で、HTTPヘッダーにHostパラメータが存在しないような場合です。比較対照の値が存在するかしないかの判定には、後で説明するpresentタグ/notPresentタグを用います。

(実習課題1)

以下のWebアプリケーションを作成しなさい。

  • HTTPヘッダーのUser-Agentの値を表示する事。
  • ブラウザの種類をUser-Agentの値によって判別し、表示するテキストを変えるようにする事。
  • Strutsのタグライブラリで極力、実現するようにする事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp