SSM サンプルファイル - HTML

書き方のルール

  1. HTMLの拡張子は、右の4つのいずれかにする:「.html」「.htm」「.HTML」「.HTM」
    これ以外にするとCGIとみなされ、HTTPヘッダの送信が行われない。CGIの場合は、スクリプトファイル内で、HTTPヘッダの書き出しを行わなければならないが、HTMLの場合はこれはSSMが自動で行う。

  2. 処理を行いたい部分にSSMタグを記述する
    SSMタグではさまれたHTMLテキストは、処理関数に引数として渡される。

    例)

    HTMLコード

    HTMLテンプレート中に以下のように記述する。

    <SSM ACTION="myaction" FUNCTION="print_hello_10_times" MODE="begin">
    挟まれたテキスト
    <SSM MODE="end">

    関数定義

    スクリプトファイル側には以下のように関数を定義しておく。

    sub print_hello_10_times($$$){
        local (%main::SIG);
        $SIG{'TERM'} = $SIG{'CHLD'} = $SIG{'KILL'} = $SIG{'INT'} = \&signalhandler;

        my ($ssmstr, $queryref, $paramref) = @_;
        my $n=0;
        while ($n++ < 10){
            print "hello! my action is [$paramref->{'action'}], ssmstring is ${ssmstr}<BR>\n";
        }
        #真の終了値で終了
        return 1;
    }

    表示

    表示は以下のようになる。

    挟まれたテキスト

  3. SSM開始タグは、以下の属性を含まなくてはならない
    FUNCTION
    スクリプトファイルに定義した関数名を指定する
    Ssm::Common::printvalue など、パッケージ名を含んだ指定もできる。
    MODE
    固定文字列「begin」を指定する。

    上記以外の属性に関しては、関数内で使用するものを自由に設定することができる。

  4. SSM終了タグは、以下の属性を含まなくてはならない
    MODE
    固定文字列「end」を指定する。

    上記以外の属性は、指定しても無視される。

  5. 関数は真の終了値を返さなければならない
    終了値が偽だと、処理が終了した後、下記のようなエラーが表示される。

    SSM ERROR

    eachprog::print_hello_10_times,

詳細は、これらのサンプルファイルのコードを参考にして下さい。
テスト用のテンプレート類のコードも参考にして下さい。


送信されたクエリーをハンドルする例

HTMLコード

<SSM FUNCTION="handle_query" MODE="begin">
<FONT COLOR="#006600" SIZE="+1">
%_sentvalue_%
</FONT>
<SSM MODE="end">

関数定義

送信された文字列を、全て小文字にして表示(キーワード %_sentvalue_% と置き換え)する関数。

sub handle_query($$$){
    local (%main::SIG);
    $SIG{'TERM'} = $SIG{'CHLD'} = $SIG{'KILL'} = $SIG{'INT'} = \&signalhandler;

    my ($ssmstr, $queryref, $paramref) = @_;
    $ssmstr =~ s/%_sentvalue_%/lc($$queryref->Vars->{'sentvalue'})/eg
        && print $ssmstr;
    return 1;
}

表示

クリックしてチェック→sample_html.html?sentvalue=UPPERCASESTRING
(ページが再読み込みされたら、ここまでスクロールして下さい。)

%_sentvalue_%

SSM サンプルファイル - HTML $Revision: 1.4 $