在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上,不知道该如何设置。