Sun ONE ロゴ     前へ      目次      索引      次へ     
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 を有効にするには、次の手順を実行します。

  1. 管理インタフェースで、サーバーインスタンスの下の HTTP サーバーコンポーネントを開きます。
  2. 「仮想サーバー」ページに移動します。
  3. サーバーサイド HTML を有効にする仮想サーバーの名前をクリックします。
  4. 「HTTP/HTML」タブをクリックします。
  5. 「HTML をパース」オプションをクリックします。
  6. サーバーで HTML をパースされる対象のリソースを選択します。
  7. 仮想サーバーか、仮想サーバー内の特定のディレクトリを選択します。

    ディレクトリを選択した場合、サーバーはそのディレクトリかそのディレクトリ内のファイルを表す URL を受信したときだけ HTML をパースします。

  8. サーバーでパースされる HTML を有効にするかどうかを選択します。
  9. HTML ファイルに対してだけ有効にし、exec タグに対しては無効にすることができます。または、HTML ファイルと exec タグの両方に対して有効にすることもでき、この場合は HTML ファイルでサーバー上のほかのプログラムを実行できます。

  10. どのファイルをパースするかを選択します。
  11. .shtml という拡張子を持つファイルだけをパースするか、すべての HTML ファイルをパースするかを選択できます。後者の場合は処理速度が低下します。UNIX を使用している場合は、実行権限がある UNIX ファイルを選択することもできますが、信頼性は保証されません。

  12. 「了解」ボタンをクリックします。
  13. サーバーインスタンスページに移動し、「変更の適用」ボタンを選択します。

パースを有効にする場合は、次の指令が 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 コマンドのファイルサイズの形式を指定する。この属性には、次のいずれかの値を指定できる
    • bytes を指定すると、12,345,678 のような自然数としてファイルサイズが報告される
    • abbrev (デフォルト) を指定すると、K バイトまたは M バイト単位でファイルサイズが報告される

<!--#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 に使用する日付と時刻の書式文字列について説明しています。左の列は日時の形式を表す記号、右の列は各記号の説明です。

   日時の形式 

記号

意味

%a

 

曜日の名前 (3 文字の短縮形)

 

%d

 

月内の日付 (01 から 31 までの 10 進数)

 

%S

 

秒 (00 から 59 までの 10 進数)

 

%M

 

分 (00 から 59 までの 10 進数)

 

%H

 

時 (00 から 23 までの 24 時間形式)

 

%Y

 

年 (2099 までの 10 進数)

 

%b

 

月の名前 (3 文字の短縮形)

 

%h

 

月の名前 (3 文字の短縮形)

 

%T

 

"HH:MM:SS" 形式の時刻

 

%X

 

"HH:MM:SS" 形式の時刻

 

%A

 

曜日の名前 (完全形)

 

%B

 

月の名前 (完全形)

 

%C

 

"%a %b %e %H:%M:%S %Y"

 

%c

 

"%m/%d/%y %H:%M:%S" 形式の日付と時刻

 

%D

 

"%m/%d/%y" 形式の日付

 

%e

 

月内の日付 (先頭にゼロを付加しない、1 から 31 までの 10 進数)

 

%I

 

時 (01 から 12 までの 12 時間形式)

 

%j

 

年内の日付 (001 から 366 までの 10 進数)

 

%k

 

時 (先頭にゼロを付加しない、0 から 23 までの 24 時間形式)

 

%l

 

時 (先頭にゼロを付加しない、1 から 12 までの 12 時間形式)

 

%m

 

月 (01 から 12 までの 10 進数)

 

%n

 

改行文字

 

%p

 

A.M./P.M. 表示 (12 時間形式の場合)

 

%R

 

"%H:%M" 形式の時刻

 

%r

 

"%I:%M:%S %p" 形式の時刻

 

%t

 

タブ文字

 

%U

 

年内の週 (00 から 51 までの 10 進数。日曜日を週の開始日とする)

 

%w

 

曜日 (0 から 6 までの 10 進数。日曜日を 0 とする)

 

%W

 

年内の週 (00 から 51 までの 10 進数。月曜日を週の開始日とする)

 

%x

 

"%m/%d/%y" 形式の日付

 

%y

 

年 (下 2 桁だけの、00 から 99 までの 10 進数)

 

%%

 

パーセント記号

 


前へ      目次      索引      次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.