Tomcat、Groovy和clean URL

Tomcat、Groovy和clean URL,tomcat,groovy,clean-urls,Tomcat,Groovy,Clean Urls,我正试图让Groovy在Tomcat内部以干净的URL运行。因为我对Tomcat的url映射和过滤器的了解非常有限,所以我遇到了麻烦 我想创建一个名为index.groovy的前端控制器,用于处理所有传入请求。问题是我似乎不知道如何创建正确的web.xml映射。这是我目前拥有的(相当标准): 当然,理想情况下,我希望执行index.groovy脚本,这样我就可以选择路径的其余部分。我认为这里的主要问题是您对servlet映射和GroovyServlet的工作原理的误解。下面是一个简单的解释:

我正试图让Groovy在Tomcat内部以干净的URL运行。因为我对Tomcat的url映射和过滤器的了解非常有限,所以我遇到了麻烦

我想创建一个名为
index.groovy
的前端控制器,用于处理所有传入请求。问题是我似乎不知道如何创建正确的
web.xml
映射。这是我目前拥有的(相当标准):


当然,理想情况下,我希望执行
index.groovy
脚本,这样我就可以选择路径的其余部分。

我认为这里的主要问题是您对servlet映射和GroovyServlet的工作原理的误解。下面是一个简单的解释:

  • 当您描述这种映射时,它表示所有匹配“/*”模式的URL都将被发送到GroovyServlet类。使用这种通用模式,所有url都是有效的,这可能会导致一些问题,例如在尝试访问图像、样式等时
  • GroovyServlet已经是一个调度器了。如果您查看它的源代码,您将看到,由于它的继承性,它只需检查给定路径是否存在于“/WEB-INF/groovy/”目录下。在您的示例中,这意味着它查找“/WEB-INF/groovy/index.groovy/test”文件
  • 如果该文件存在,它将作为Groovy脚本执行(带有一些装饰程序),结果将以“text/html”mime类型返回
现在,我认为您可以清楚地理解为什么它对您的示例不起作用。我更愿意向您推荐两种实现目标的其他方法:

  • 看一看,它是最适合GroovyWeb开发的框架之一
  • 以微观框架的来源为例。这不仅是了解分派工作原理的良好开端,而且还提供了一个很好的教程来帮助管理干净的URL

谢谢您的解释。现在有道理了。我要看看盖利克。尽管我没有使用谷歌应用程序引擎,但里面可能有一些有用的信息。
<servlet>
    <servlet-name>Groovy</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Groovy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
http://localhost:8080/GroovyTest/index.groovy/test