Top / CGI English

jj/CGI Module

Created: 2003-03-25
Last updated: 2003-09-20








by Fumisky Wells

  1. Overview
  2. jj/CGI 入門
  3. マニュアル

Overview

jj/cgi は、jj/pattern をベースにした CGI ライブラリです。 C++ 用 CGI ライブラリは既に他に多くあると思いますが、基本的な部分 は簡単なので、ついつい作ってしまいました(笑)。

jj/CGI 入門

CGI の基本は他書に譲ります。ここでは、jj/CGI をどう使うかに 絞って説明します。
  1. 初級(白帯)編
    1. "Hello,World" を C++ の CGI で書く
    2. CGI Form を扱う基礎
  2. 中級(緑帯)編
    1. CGI Form の全フィールド値を知る
    2. 多値を扱う (TBD)
    3. ファイルアップロードの方法
  3. 上級(黒帯)編
    1. Cookie の使いかた (TBD)
    2. Form のオブジェクト化 & 永続化 (TBD)

初級(白帯)編

  1. "Hello,World" を C++ の CGI で書く
    Source: hello.cpp (要コンパイル)
    Sample: hello

    最初の例は、C++ による CGI の最も基本的な例です。 jj/CGI とは関係ありませんが、導入として載せてみました。

    お決まりの Hello,World です。

    こんな単純なケースは普通の html で事足りることではありますが...。

  2. CGI Form を扱う基礎
    Source: put_a.cpp (要コンパイル)
    Sample: put_a.html

    'a' という名前のテキストフィールドに入力された 値を印字する CGI です。

    jjCGI_form という型のオブジェクト form を生成し、 CGI のフォームの入力値を解析 parse() し、form["a"] という形式でフィールド 'a' の値(文字列)を得ています。

中級(緑帯)編

  1. CGI Form の全フィールド値を知る
    Source: put_all.cpp (要コンパイル)
    Sample: put_all.html

    Form に入力されたすべての値を調べる方法です。

    jj/CGI の機能と言うよりは、jj/CGI のベースとなっている jj/Pattern の機能を使っています。フォーム jjCGI_form のベースクラスである jjCGI_hash はフィールドクラス jjCGI_field のハッシュを構成しています。

    jjcgi_hash のイタレータ jjcgi_hash_iterator を使って、フォーム内の 全フィールドをスキャンし、フィールド名とフィールド値を得ています。

  2. 多値を扱う
    Source: multi_value.cpp (要コンパイル)
    Sample: multi_value.html

  3. ファイルアップロードの方法
    Source: fupload.cpp (要コンパイル)
    Sample: fupload.html

    jj/CGI は、アップロードされたファイルはテンポラリファイルに 一旦保存され、そのテンポラリファイルを
    form._server_filename[field_name]
    でアクセスします。ここで、form は jjCGI_form 型のオブジェクト、 field_name は HTML のフォーム中のファイルアップロード 用のフィールド名
    <input type="file" name="field_name">
    です。

    通常、この「サーバ側に保存された仮ファイル名」 _server_filename[] で事足りますが、この他の属性として

    _client_filename[]   クライアントのファイル名
    _ctype[]   ファイルの型

    の使用例もサンプルの中にあります。

上級(黒帯)編

  1. Cookie の使いかた
    (TBD)
  2. Form のオブジェクト化 & 永続化
    (TBD)

マニュアル

マニュアルDoxygen で生成しました(感謝!)。 マニュアルを参照下さい。