Tomcat,Groovy和干净的网址

时间:2010-01-24 08:50:54

标签: tomcat groovy clean-urls

我正在尝试使用干净的网址在Tomcat中运行Groovy。由于我对Tomcat的url映射和过滤器的了解非常有限,所以我遇到了一堵砖墙。

我想要的是创建一个名为index.groovy的前端控制器来处理所有传入的请求。问题是我似乎无法弄清楚如何创建正确的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>/*</url-pattern>
</servlet-mapping>

如果我现在尝试使用以下网址访问我的实例,我会收到404

http://localhost:8080/GroovyTest/index.groovy/test

当然,理想情况下,我希望执行index.groovy脚本,然后我可以选择剩下的路径。

1 个答案:

答案 0 :(得分:3)

我认为这里的主要问题是你对如何对GroovyServlet的servlet进行映射的误解。所以,这里有一个简短的解释:

  • 当您描述此类映射时,它表示匹配“/ *”模式的所有URL都将发送到GroovyServlet类。使用这种通用模式,所有url都是有效的,这可能会导致一些问题,例如在尝试访问图像,样式等时......
  • GroovyServlet已经是一个调度程序。如果你看一下它的源代码,你会看到,由于它的继承,它只会检查给定路径是否存在于“/ WEB-INF / groovy /”目录下。在您的示例中,这意味着它会查找“/WEB-INF/groovy/index.groovy/test”文件
  • 如果此文件存在,则将其作为Groovy脚本(带有一些装饰器)执行,并以“text / html”mime类型返回结果。

现在我认为你可以清楚地理解为什么它不适用于你的例子。我宁愿建议你另外两种方法来实现你的目标:

  • 看一下Grails,这是进行常规网站开发的最适合的框架之一。
  • 获取Gaelyk微框架的来源。这不仅是了解调度工作的良好开端,而且还有一个很好的教程来帮助管理干净的URL
相关问题