Tomcat、Groovy和clean URL
我正试图让Groovy在Tomcat内部以干净的URL运行。因为我对Tomcat的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的工作原理的误解。下面是一个简单的解释:
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