ProjectZero CLI を使ってみる

ProjectZero の Command Line Interface を使ってみる。

インストールは、http://www.projectzero.org/wiki/bin/view/Download/DownloadCli からダウンロードした後、適当なディレクトリに展開し、そのホームディレクトリを環境変数 PATH に設定するだけ。(ただし、実行には JavaSE 5.0 が必要)

プロキシ内での利用

早速、以下のコマンドでアプリケーションを作成しようとするが、Server access Error: Connection timed out: が発生して失敗。

>zero create testapp

ネットワークから必要なファイルを取って来るみたいだが、プロキシを通す場合の設定はどうするんだ?と疑問に思い、軽く探してみたが該当する情報が見つからず。

そこで、ant/zero.xml ファイルにプロキシ設定を加えるという暫定措置で、とりあえずプロキシ内で zero create が正常に実行できるようになった。

ant/zero.xml ファイルの変更例
<project name="zero" default="help" basedir=".">
    <setproxy proxyhost="192.168.1.1" proxyport="80" />
    ・・・
zero create 実行時の注意点

Ruby on Rails などと違い、zero create は -dir でアプリケーションの生成先ディレクトリを指定せずに実行すると、${zerohome}/apps 内にファイルが生成されるので注意。

カレントディレクトリ内にアプリケーションを作成する場合は以下のようにする。

>zero create testapp -dir .

アプリケーションの実行

zero create 実行で作成されたディレクトリに移動し、zero run でアプリケーションを実行。
Web ブラウザで http://localhost:8080/ に接続して動作確認。

>cd testapp
>zero run

簡単なページの作成

ここで、public ディレクトリが Web サーバーのドキュメントルートとして公開される。そのため、public ディレクトリに groovy ファイルや HTML ファイルを配置すればブラウザからアクセスできるようになる。

以下のような page.groovy ファイルを public ディレクトリに配置し、http://localhost:8080/page.groovy にアクセスすると、出力した HTML の内容が表示される事を確認できる。

public/page.groovy ファイル
print """
<html>
<body>
    <h1>テスト</h1>
<body>
</html>
"""

テンプレートの使用

テンプレートファイルを app/views ディレクトリに配置する。

app/views/simple.gt ファイル
<html>
<body>
    <h1>テストページ</h1>

    <h2>parameter : ${request.params.name[]}</h2>
    <h2>data : ${user.data[]}</h2>

    <form method="POST">
        名前:<input type="text" name="name">
        <input type="submit" name="action" value="追加">
    </form>

</body>
</html>

${xxx} で変数の値を出力しているが、代わりに <%= xxx %> という記述を使用しても可。

次に、Groovy スクリプト側で request.view にテンプレートファイルの名称を設定し、render メソッドを呼び出すようにすればテンプレートが呼び出されるようになる。

public/simple.groovy ファイル
if (user.data[] == null) {
	user.data = []
}

if (request.params.name[0] != null) {
	user.data << request.params.name[0]
}

request.view = 'simple.gt'
render()

上記スクリプトでは、入力した名前を追加ボタンを押すたびに追加している。追加には << を使うしかない模様。(add メソッドは使えない)

なお、user や request は zone と言うものらしく、以下のようなものが用意されており、user は JSP の session、app は JSP の application と同じようなものみたいだ。

  • config
  • app
  • request
  • user
  • event