Groovy Server Pagesを利用する
Groovyには、Groovletと並んでもう1つ「Groovy Server Pages(GSP)」という機能も用意されています。これは、JSPのGroovy版といったもので、HTMLのタグにスクリプトを埋め込んで実行させることができます。
では、これも使ってみましょう。まず、GSPを使うためのサーブレットをweb.xmlに登録します。これは<web-app>内に次のように追記をします。
<servlet> <servlet-name>GroovyTemplate</servlet-name> <servlet-class>groovy.servlet.TemplateServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GroovyTemplate</servlet-name> <url-pattern>*.gsp</url-pattern> </servlet-mapping>
これで、gsp拡張子のファイルがGSPとして認識されるようになります。続いて、Google App Engineの設定を修正します。WEB-INFにある「appengine-web.xml」というファイルを開いてください。この<appengine-web-app>タグ内に、以下のタグを追記します。
<static-files> <exclude path="/**.gsp" /> </static-files>
これで、gsp拡張子のファイルが静的ファイルとしてGAEに認識されるようになります。では、GSPファイルを作成しましょう。「war」内に「hello.gsp」というファイルを作成し、次のように記述してください。
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Hello</title> </head> <body> <h3>Groovy Server Pages.</h3> <%=Calendar.getInstance().getTime() %> </body> </html>

これで完成です。これもGoogleのサイトにデプロイして動作確認をしましょう。「http://アプリケーション名.appspot.com/hello.gsp」とアドレスを指定してアクセスすると、GSPの表示が現れます。
GSPは、JSPと同様に<% %>や<%= %>を使ってスクリプトを埋め込んで記述することが可能です。また、Calendarを使うのに、java.utilをimportしていないのに気が付くことでしょう。importしなくともクラス類はそのままクラス名でアクセスできます。このあたり、JSPよりもぐっと使いやすいです。
GroovletとGSP、いずれも使いこなせば非常にWeb開発を便利にしてくれるものです。しかし、現時点で、大きな問題があることも触れておかなければいけません。それは、「GAEで利用すると、いずれも日本語が化ける」という問題です。
サーブレットについては問題ありませんし、またその他のコンパイルされたクラス類についても問題はありません。要するに、「事前にコンパイルされていれば大丈夫だが、テンプレートのような形でその場でコードを生成するタイプのものは日本語が正しく表示されない」ということのようです。従って、現状では、サーブレットやBeanなどと組み合わせて使っていくことになるでしょう。
まとめ
今回は、GAEを利用するための準備と、サーブレット・Groovlet・GSPといったGroovyでWeb開発を行うための基本的な機能について一通り説明しました。GAEの開発の基本は、「Javaのサーブレットコンテナで動くWebアプリケーション」と実はほとんど同じです。ですから、GroovyによるWeb開発の基本が分かれば、すぐにでも使うことができるのです。
ただし、一般的なWebアプリケーションと違う点もあります。それは、「Googleが提供するサービスを利用できる」という点です。次回は、これらの利用について説明を行います。
