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