在GAE宣布支持java不久,spring的Blog上就有了一篇关于使用groovy在GAE上进行开发的文章。参照这篇文章,我就小试一把,发现还是挺爽的。
参照文章的网址为http://blog.springsource.com/2009/04/07/write-your-google-app-engine-applications-in-groovy/
首先下载作者提供的模板程序,接着修改appengine-web.xml文件
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>你的applicationId</application> <version>1</version> </appengine-web-app>
创建传统的servlet,在groovy中与java没有多大的区别,不过可以使用groovy的语法足矣。传统servlet就不多说了。
Groovlet框架是groovy对传统servlet的简化。使用Groovlet非常简单,首先跟传统的servlet一样需要在web.xml中 进行servlet的设置,但是不同的是使用groovlet只需设置groovy.servlet.GroovyServlet,接下来创建的多个 Groovlet都不用再进行设置。web.xml设置如下:
<servlet> <servlet-name>GroovyServlet</servlet-name> <servlet-class>groovy.servlet.GroovyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GroovyServlet</servlet-name> <url-pattern>*.groovy</url-pattern> </servlet-mapping>
在deploy/WEB-INF/groovy中创建一个hello.groovy
html.html { head { title "Hello" } body { p "Hello Groovy World!" } }
再创建一个test.groovy内容如下:
html.html { head { title "Weclome to test" meta(charset:"UTF-8") link(rel:"stylesheet",type:"text/css",href:'test.css') } body { div{ p("您好,${request.getParameter('name')}") } div{ p("欢迎你来到groovlet的世界!") } } }
为配和test.groovy需要一个页面提交一个姓名,在deploy/下创建一个index.html
<html> <head> <meta charset="UTF-8"> <title>Groovy的简单测试</title> <link rel="stylesheet" type="text/css" href="test.css"> </head> <body> <form method="get" action="test.groovy"> <div> 请输入你的姓名</div> <table> <tr> <td>姓名</td> <td><input type="text" name="name"/></td> </tr> <tr> <td><input type="submit"/></td> </tr> </form> </body> </html>
接下来就是部署了,这里需要注意的是要设置appengine-java-sdk相关的环境变量,将bin加入到path中
我的环境变量的设置如下:
APPENGINE_HOME=D:\dev\env\appengine-java-sdk-1.2.0
path=%APPENGINE_HOME%\bin
设置完毕后,进入命令提示符,切换到该项目的根目录下,运行
appcfg update deploy/
如果你要写传统的servlet还需要在上上传前进行编译
groovy build
上传成功后,分别访问http://你的id.appspot.com/hello.groovy 与http://你的id.appspot.com/index.html, 我们可以发现提交到test.groovy后,写的中文都是乱码,而提交的中文不是乱码,这个的原因我查了一下应该是GroovyServlet会使用系统预设的编码读取Groovlets ,所以需要使用-Dfile.encoding=UTF8,项目运行在gae上,不知道该如何设置。