美文网首页
[译] Groovy 支持 Servlet

[译] Groovy 支持 Servlet

作者: 翼徳 | 来源:发表于2018-11-14 17:34 被阅读9次

原文地址:http://groovy-lang.org/servlet.html

您可以在 Groovy 中编写(Java)Servlet(称为Groovlets)。还有一个GroovyServlet

此功能将自动编译 .groovy 源文件,将它们转换为字节码,加载类并缓存它直到您更改源文件。

这是一个简单的例子,向您展示可以从 Groovlet 中执行的操作。

注意使用隐式变量来访问会话,输出和请求。另请注意,这更像是一个脚本,因为它没有类包装器。

if (!session) {
  session = request.getSession(true)
}

if (!session.counter) {
  session.counter = 1
}

println """
<html>
    <head>
        <title>Groovy Servlet</title>
    </head>
    <body>
        <p>
Hello, ${request.remoteHost}: ${session.counter}! ${new Date()}
        </p>
    </body>
</html>
"""
session.counter = session.counter + 1

或者,使用 MarkupBuilder 执行相同的操作:

if (!session) {
    session = request.getSession(true)
}

if (!session.counter) {
    session.counter = 1
}

html.html { // html is implicitly bound to new MarkupBuilder(out)
  head {
      title('Groovy Servlet')
  }
  body {
    p("Hello, ${request.remoteHost}: ${session.counter}! ${new Date()}")
  }
}
session.counter = session.counter + 1

1. 隐式变量

以下变量已准备好在 Groovlet 中使用:

变量名 绑定 备注
request ServletRequest -
response ServletResponse -
context ServletContext -
application ServletContext -
session getSession(false) 可以是 null(参考<1>)
params Map 对象
headers Map对象
out response.getWriter() 参考<2>
sout response.getOutputStream() 参考<2>
html new MarkupBuilder(out) 参考<2>
json new StreamingJsonBuilder(out) 参考<2>
  1. 如果已存在session对象,则仅设置session变量。请参阅上面示例中的 if (session == null) 检查。
  2. 无法在 Groovlet 中重新分配这些变量。它们在第一次访问时受到约束,允许例如在使用之前调用response 对象上的out方法。

2.设置 groovylets

在你的web.xml 中添加以下代码:

<servlet>
    <servlet-name>Groovy</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Groovy</servlet-name>
    <url-pattern>*.groovy</url-pattern>
</servlet-mapping>

然后将所需的 groovy jar文件放入WEB-INF/lib

现在将 .groovy 文件放在根目录中(即放置html文件的位置)。GroovyServlet 负责编译 .groovy 文件。

所以例如使用 tomcat 你可以像这样编辑 tomcat/conf/server.xml

<Context path="/groovy" docBase="c:/groovy-servlet"/>

然后使用 http://localhost:8080/groovy/hello.groovy 访问它。

相关文章

网友评论

      本文标题:[译] Groovy 支持 Servlet

      本文链接:https://www.haomeiwen.com/subject/cgwjfqtx.html