可以在 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)! 参见 |
params |
|
Map 对象 |
headers |
|
Map 对象 |
out |
response.getWriter() |
参见 |
sout |
response.getOutputStream() |
参见 |
html |
new MarkupBuilder(out) |
参见 |
A:如果 session 对象存在,就设置到变量中,如果不存在不会新建一个 session,所以它可能为空。(The session variable is only set, if there was already a session object.)可以像上面代码中那样通过 'if (session == null)' 检查是否为空。
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.jar、antlr.jar 和 asm.jar,或者将 groovy-all-xyz.jar 复制到 WEB-INF/lib - 这基本上包含了 antlr 和 asm jar 包。
现在将 .groovy 文件放到所谓的根目录(也就是你放置 html 文件的地方)。groovy servlet 会编译 .groovy 文件的。
如果你使用 tomcat,可以这样修改 tomcat/conf/server.xml 文件: