処理の内容
共有セションのアプリケーションの例を説明します。
サンプルプログラム
サンプルプログラムは、SolarisおよびLinuxの場合の例です。Windows(R)の場合は、“9.2.2 Windows(R)の場合の設定方法”を参照してください。
WebScriptの起動時に、public.envが参照されます。
public.env(アプリケーション環境パラメタ)
・・・ DBName = SAMPLE userid = XXXXXXXX passwd = XXXXXXXX formatDir = /opt/FJSVsymwd/sample/format_public ・・・
start.html
・・・ <A HREF="login.html">個別セション</A><BR> <A HREF="demo_cookie.html">共有セション</A><BR> ・・・
demo_cookie.html
・・・ <FORM ACTION="/cgi-bin/wit_fmtr" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="WIT_html" VALUE="demo_fmt.html"> 製品名:<INPUT TYPE="TEXT" NAME="Name"><BR> <INPUT TYPE="SUBMIT" NAME="Search" VALUE="検索"> </FORM> ・・・
demo_fmt.html
・・・ <!SETVAR cond "製品名 LIKE ’%$QUERY::Name%’"> <!SETCOOKIE prev_cond cond> (1) <!DO "SELECT 製品名,カテゴリ,機能,型番 FROM WL_SCHEMA.製品表 WHERE $cond" RESULT=rslt> <TABLE BORDER=1> <TR> <TD>製品名</TD> <TD>カテゴリ</TD> <TD>型番</TD> </TR> <!FOREACH rslt t> <TR> <TD><!HREPLACE ’t{製品名}’></TD> <TD><!HREPLACE ’t{カテゴリ}’></TD> <TD><!HREPLACE ’t{型番}’></TD> </TR> <!/FOREACH> </TABLE> ・・・
(1) 絞込み検索に利用する文字列の準備
絞込み検索に使用する検索文字列を作成します。拡張タグの<!SETCOOKIE>を使用して、指定した文字列を“prev_cond”という名前のcookieに設定します。
shibori_fmt.html
・・・ <!SETVAR cond "製品名 LIKE ’%$QUERY::Name%’ AND $COOKIE::prev_cond"> <!SETCOOKIE prev_cond cond> (2) <!DO "SELECT 製品名,カテゴリ,型番 FROM WL_SCHEMA.製品表 WHERE $cond" RESULT=rslt> <TABLE BORDER=1> <TR> <TD>製品名</TD> <TD>カテゴリ</TD> <TD>型番</TD> </TR> <!FOREACH rslt t> <TR> <TD><!HREPLACE ’t{製品名}’></TD> <TD><!HREPLACE ’t{カテゴリ}’></TD> <TD><!HREPLACE ’t{型番}’></TD> </TR> <!/FOREACH> </TABLE> ・・・
(2) 絞込み検索の検索文字列の設定
絞込み検索を行うために、(1)で作成した検索文字列と、新しく指定された文字列を“AND”で結び、“cond”に格納します。
解説
demo.html で指定された文字列を引き継ぎ、demo_fmt.html でデータベースの検索を行います。検索結果が不十分な場合、処理をshibori_fmt.html に引き継ぎ、絞込み検索を行いますが、共有セションの場合、グローバル変数を使用することができないため、フォーマットファイル間でデータのやり取りができません。
この場合、cookieを利用し、フォーマットファイル間で共通な変数として使用することができます。
ポイント
共有セションを利用する場合、フォーマットファイル間ではグローバル変数を設定することができません。この場合に、解決方法として考えられるのが、cookieの使用です。
cookieもほかのシステム変数と同じように、“COOKIE::”と指定した名前を組み合わせて利用します。詳細は、“7.5 COOKIEパッケージ変数”を参照してください。