我有一个 Groovy Web 应用程序,它没有部署在 Google 应用程序引擎上。(GAE) 我以前使用过 Gaelyk,我喜欢他们文档中描述的 URL 路由功能
如何仅将路由功能从 Gaelyk 移植到未部署在 GAE 上的基本 Groovy WEB 应用程序?
注意 1:我也不想在这个应用程序中使用 Grails。
注意 2:我不介意包含 gaelyk jar,但我宁愿不包含 GAE 中的任何内容。
我有一个 Groovy Web 应用程序,它没有部署在 Google 应用程序引擎上。(GAE) 我以前使用过 Gaelyk,我喜欢他们文档中描述的 URL 路由功能
如何仅将路由功能从 Gaelyk 移植到未部署在 GAE 上的基本 Groovy WEB 应用程序?
注意 1:我也不想在这个应用程序中使用 Grails。
注意 2:我不介意包含 gaelyk jar,但我宁愿不包含 GAE 中的任何内容。
如果您想在自己的非 GAE 框架中实现这一点,最好的起点是源代码......
首先,您需要一个在 Gaelyk 中扩展javax.servlet.Filter的类,这是RoutesFilter 类
如您所见,在init
Filter 的方法中,此调用loadRoutes
通过GroovyShell
.
这个 shell 使用了同一个包中的其他类,因此它最终使用Route 类List<Route> routes
的实例填充过滤器中的属性。
过滤器(当由 web.xml 配置时)然后拦截对服务器的所有请求,依次检查每个路由的 URI(通过调用forUri
每个路由的方法),如果找到匹配项,它会根据需要重定向或转发。
如果未找到匹配项,过滤器将调用Web 服务器上下文中链下的下一个过滤器。
希望这能回答你的问题