【发布时间】:2013-04-25 17:23:26
【问题描述】:
刚刚结束我的最后一次冒险,现在我正在尝试映射更复杂的 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 首先说它很好,然后说它不匹配。
这里关于通配符有什么我不明白的地方吗?
【问题讨论】:
-
对不起,我不熟悉“url-filter”你能提供更多关于它的上下文吗?
标签: spring tomcat spring-mvc