Sun ONE Application Server 7 Web アプリケーション開発者ガイド |
サーバーでパースされる HTML の使用法HTML ファイルには、サーバーで実行されるタグを指定することができます。Sun ONE Application Server 7 では、標準のサーバーサイドタグのほかに、サーブレットを埋め込んだ独自のサーバーサイドタグを定義できます。
サーバーでパースされるカスタムの HTML タグを作成できます。詳細については、『Sun ONE Application Server NSAPI Developer's Guide』を参照してください。
セキュリティ確保のために、サーバーでパースされる HTML タグは、サーバーのセキュリティ設定に依存します。詳細については、「SHTML と CGI のセキュリティ」および『Sun ONE Application Server セキュリティ管理者ガイド』を参照してください。
このmoduleには次の節があります。
サーバーサイド HTML と J2EE Web アプリケーション
Sun ONE Application Server では、サーバーでパースされる HTML と J2EE Web アプリケーションの相互運用はできません。特に、次の点に注意してください。
- サーバーでパースされる HTML を Web アプリケーションのコンテキストルートに置かない
- サーバーでパースされる HTML の出力をサーブレットや JSP に取り込まない
- サーバーでパースされる HTML へサーブレットや JSP から要求を転送しない
- J2EE の security-constraint 機能や filter-mapping 機能は、サーバーでパースされる HTML には適用できない
サーバーサイド HTML の有効化
サーバーサイド HTML を有効にするには、次の手順を実行します。
- 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
- 「仮想サーバー」ページに移動します。
- サーバーサイド HTML を有効にする仮想サーバーの名前をクリックします。
- 「HTTP/HTML」タブをクリックします。
- 「HTML をパース」オプションをクリックします。
- サーバーで HTML をパースされる対象のリソースを選択します。
仮想サーバーか、仮想サーバー内の特定のディレクトリを選択します。
ディレクトリを選択した場合、サーバーはそのディレクトリかそのディレクトリ内のファイルを表す URL を受信したときだけ HTML をパースします。
- サーバーでパースされる HTML を有効にするかどうかを選択します。
HTML ファイルに対してだけ有効にし、exec タグに対しては無効にすることができます。または、HTML ファイルと exec タグの両方に対して有効にすることもでき、この場合は HTML ファイルでサーバー上のほかのプログラムを実行できます。
- どのファイルをパースするかを選択します。
.shtml という拡張子を持つファイルだけをパースするか、すべての HTML ファイルをパースするかを選択できます。後者の場合は処理速度が低下します。UNIX を使用している場合は、実行権限がある UNIX ファイルを選択することもできますが、信頼性は保証されません。
- 「了解」ボタンをクリックします。
- サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。
パースを有効にする場合は、次の指令が init.conf ファイルに追加されていることを確認してください (ネイティブスレッドをオフにします)。
Init funcs="shtml_init,shtml_send" shlib="install _dir/bin/Shtml.dll" NativeThread="no" fn="load-modules"
Sun ONE Application Server 7 では NativeThread="no" を設定する必要があります。また、Windows の場合は install_dir/bin にある Shtml.dll で、UNIX の場合は install_dir/lib にある libShtml.so で、これらの関数が提供されるようになりました。
さらに、次の指令が obj.conf ファイルに追加されていることを確認してください。
<Object name="default">
...
...
Service fn="shtml_send" type="magnus-internal/parsed-html" method="(GET|HEAD)"
...
</Object>サーバーサイド HTML コマンドの使用法
この節では、サーバーでパースされるタグを HTML ファイルに組み込むための HTML コマンドについて説明します。これらのコマンドは HTML ファイルに埋め込まれ、obj.conf ファイルの parse-html 関数によって処理されます。
サーバーは、コマンドとその属性で決定されたデータで、各コマンドを置換します。コマンドの形式は次のとおりです。
<!--#command attribute1 attribute2 <Body>... -->
各 attribute の形式は、次のような名前 - 値のペアです。
name="value"
コマンドと属性名には小文字を使用してください。
コマンドは HTML コメントの中に隠されているため、サーバーでパースされない場合は無視されます。標準のサーバーサイドコマンドは次のとおりです。
config
config コマンドは、ほかのコマンドの形式を初期化します。
- errmsg 属性は、ファイルのパース中にエラーが発生した場合にクライアントへ送信するメッセージを定義する。このエラーはサーバーのログファイルにも記録される
- timefmt 属性は、flastmod コマンドの日時の形式を指定する。この属性では、util_strftime 関数と同じ書式設定文字が使用される。日時のデフォルト形式は "%A, %d-%b-%y %T"
日時の形式の詳細については、「日時の形式」を参照してください。
- sizefmt 属性は、fsize コマンドのファイルサイズの形式を指定する。この属性には、次のいずれかの値を指定できる
例
<!--#config timefmt="%r %a %b %e, %Y" sizefmt="abbrev"-->
このコマンドは、08:23:15 AM Wed Apr 15, 1996 のような日時の形式を指定し、ファイルで使用されている文字数に K バイトまたは M バイト単位で表すファイルサイズ形式を指定します。
include
include コマンドは、パースされるファイルの中にファイルを挿入します。挿入したファイルの中にさらに別のファイルを挿入することによって、パースされるファイルを入れ子にできます。パースされるドキュメントが置かれているディレクトリに対してサーバーがアクセス制御を使用している場合、このドキュメントを要求するクライアントは、組み込まれるファイルに対してもアクセス権を持っている必要があります。
Sun ONE Application Server 7 では、include コマンドに virtual 属性を指定することで、CGI プログラムファイルを組み込むことができます。CGI プログラムを実行するために exec コマンドも使用する必要があります。
- virtual 属性には、サーバー上のファイルの URI を指定する
- file 属性には、現在のディレクトリからの相対パスを指定する。この属性に ../ などの要素を含めることはできない。また、絶対パスは指定できない
例
<!--#include file="bottle.gif"-->
echo
echo コマンドは、環境変数の値を挿入します。var 属性は、挿入する環境変数を指定します。この変数が見つからない場合は "(none)" が挿入されます。環境変数の一覧については、「サーバーサイド HTML コマンド内の環境変数」を参照してください。
例
<!--#echo var="DATE_GMT"-->
fsize
fsize コマンドは、ファイルのサイズを挿入します。このコマンドの属性は、include コマンドの属性と同じです (virtual および file)。ファイルサイズの形式は、config コマンドの sizefmt 属性で指定されます。
例
<!--#fsize file="bottle.gif"-->
flastmod
flastmod コマンドは、ファイルが最後に変更された日時を挿入します。このコマンドの属性は、include コマンドの属性と同じです (virtual および file)。日時の形式は、config コマンドの timefmt 属性で指定されます。
例
<!--#flastmod file="bottle.gif"-->
exec
exec コマンドは、シェルコマンドまたは CGI プログラムを実行します。
- cmd 属性 (UNIX のみ) は、/bin/sh を使ってコマンドを実行する。このコマンドには、任意の特殊環境変数を含めることができる
- cgi 属性は、CGI プログラムを実行し、その出力をパースされるファイルに取り込む
例
<!--#exec cgi="workit.pl"-->
サーバーサイド HTML コマンド内の環境変数
パースされるコマンドには、CGI で通常使用される一連の環境変数のほかに、次の変数を含めることができます。
- DOCUMENT_NAME
パースされたファイルの名前
- DOCUMENT_URI
パースされたファイルへの仮想パス (/shtml/test.shtml など)
- QUERY_STRING_UNESCAPED
クライアントから送信された検索クエリ。ただし、シェルの特殊文字に付加されていたエスケープ文字 ¥ を外したもの
- DATE_LOCAL
現地時間による現在の日付と時刻
- DATE_GMT
グリニッジ標準時による現在の日付と時刻
- LAST_MODIFIED
ファイルが最後に変更された日時
サーブレットの埋め込み
Sun ONE Application Server 7 は、Java Web Server で導入された <SERVLET> タグをサポートしています。このタグを使うと、サーブレットの出力を SHTML ファイルに埋め込むことができます。この動作を有効にするために設定を変更する必要はありません。SSI とサーブレットがどちらも有効になっていれば、<SERVLET> タグは有効になります。
<SERVLET> タグの構文は、ほかの SSI コマンドの構文とは多少異なり、<APPLET> タグの構文に似ています。
<servlet code=code><param name=param1 value=v3><param name=param2 value=v4>.
.
</servlet>code パラメータは、サーブレットの URI を指定します。この URI には、Web アプリケーションのコンテキストルートも含まれます。この URI は、J2EE 配備記述子 (web.xml) 内の servlet-mapping 要素の url-pattern サブ要素と一致する必要があります。
日時の形式
次の表は、サーバーでパースされる HTML に使用する日付と時刻の書式文字列について説明しています。左の列は日時の形式を表す記号、右の列は各記号の説明です。