刚刚结束我的最后一次冒险,现在我正在尝试映射更复杂的 URL,并疯狂地尝试使其按照 Spring 文档建议的方式工作。
同样,这些工具是:
- Java 1.6
- Spring 3.2 MVC
- 雄猫 7
我想要做的是匹配 foo/bar/ id形式的 URL,其中id是一个整数。看起来我应该这样做的方式是像这样注释我的控制器方法:
@RequestMapping("/foo/bar/{id}")
然后在 web.xml 中有这个:
<url-filter>/foo/*</url-filter>
或这个:
<url-filter>/foo/bar/*</url-filter>
然后在部署到 Tomcat 之后,我应该能够访问 /mycontext/foo/bar/ id。但这不起作用。
为了完整起见,这里有几个变化和结果:
- 方法映射:/foo,url-filter:/foo,结果:/mycontext/foo 有效。
- 方法映射:/foo/*,url-filter:/foo/*,结果:部署时报告方法成功映射到/foo/*,但访问/mycontext/foo/bar 失败。
- 方法映射:/foo/*,url-filter:/foo/bar,结果:在部署时映射,但访问 /mycontext/foo/bar 失败。
- 方法映射:/foo/bar,url-filter:/foo/bar,结果:/mycontext/foo/bar 有效。
- 方法映射:/foo/bar/*,url-filter:/foo/bar/*,结果:在部署时映射,但访问 /mycontext/foo/bar/(anything) 失败。
- 方法映射:/foo/bar/{id},url-filter:/foo/bar/*,结果:在部署时映射,但访问 /mycontext/foo/bar/(anything) 失败。
所有失败都伴随着来自 mycontext 的 DispatcherServlet 的错误消息,即未找到映射,即使所有失败都报告在部署时设置映射成功。由于我从正确的 DispatcherServlet 收到错误,这表明我的 url-filter 设置很好。但是关于部署成功映射的消息引用了 @RequestMapping 注释中的任何内容,所以我不知道 Spring 首先说它很好,然后说它不匹配。
这里有什么我对通配符不了解的地方吗?