Skip to end of metadata
Go to start of metadata

可以在 Groovy 中写普通的 Java Servlets(也就是 Groovlets)。
有一个 GroovyServlet

这一特性会自动编译 .groovy 源文件成字节码,这个类会装载并缓存在虚拟机中,直到源文件改变。

下面是一个 Groovlet 的示例。
注意 session、output、request 这些内置变量的使用,另外因为没有 class 包裹着,它更像是一个脚本。

或者使用 MarkupBuilder 完成相同的功能:

内置变量

以下变量可以直接在 Groovlets 中使用:

变量名

绑定对象

说明

request

ServletRequest

-

response

ServletResponse

-

context

ServletContext

和 Struts 不同

application

ServletContext

和 Struts 不同

session

getSession(false)

可为空(null)! 参见 (star) A

params

 

Map 对象

headers

 

Map 对象

out

response.getWriter()

参见 (star) B

sout

response.getOutputStream()

参见 (star) B

html

new MarkupBuilder(out)

参见 (star) B

(star) A:如果 session 对象存在,就设置到变量中,如果不存在不会新建一个 session,所以它可能为空。(The session variable is only set, if there was already a session object.)可以像上面代码中那样通过 'if (session == null)' 检查是否为空。

(star) B:这个变量在 Groovlet 中不能被赋值。它们在第一次被访问时被绑定,例如允许在使用 'out' 之前调用 'response' 的方法。(They are bound on first access, allowing to e.g. calling methods on the 'response' object before using 'out'.)

配置 groovylets

将以下内容添加到 web.xml:

然后将所有 groovy 的 jar 文件复制到 WEB-INF/lib。可能只需要 groovy.jarantlr.jarasm.jar,或者将 groovy-all-xyz.jar 复制到 WEB-INF/lib - 这基本上包含了 antlr 和 asm jar 包。
现在将 .groovy 文件放到所谓的根目录(也就是你放置 html 文件的地方)。groovy servlet 会编译 .groovy 文件的。

如果你使用 tomcat,可以这样修改 tomcat/conf/server.xml 文件:

通过 http://localhost:8080/groovy/hello.groovy 访问。

  • No labels