RhinoでCGI(GET編)

30分プログラム、その99。RhinoCGIを書いてみる。
CGIライブラリが見つからなかったので、自力でGETパラメータをとってきた。

  • GETが使えるようになる <- 今ここ
  • POSTが使えるようになる
  • DOMが使えるようになる
  • なにかアプリケーションを書く

使い方

http://localhost/rhino.cgi?name=mzpにアクセスすると、

Hello,mzp

と言ってくれます。

説明

  • GETパラメータは環境変数QUERY_STRINGを自力でパースする
  • 環境変数Javascriptでは取得できないので、java.lang.Sysetm.getenvで取得している
  • protoype.jsをロードするために、いくつかのスタブを用意した
  • 連想配列からハッシュへ変換する素敵な方法が欲しい

ソースコード

#!/usr/bin/java -classpath /opt/manual/rhino/js.jar org.mozilla.javascript.tools.shell.Main

// load prototype.js
document = {
   evaluate:null
};
window = {};
navigator = { appVersion:'' };
load('js/prototype.js');

// main
print("Content-type: text/html\n\n");

function getEnv(name){
   return java.lang.System.getenv(name);
}

function parseGET(query){
   var hash = {};
   query.split('&').map(function(x){
      var item = x.split('=',2);
      hash[item[0]] = item[1];
   });
   return hash;
}

var GET = parseGET(getEnv('QUERY_STRING'));

print('Hello,' + GET.name);