我有一段时间用 Spring 3.0 MVC 解析 URL。我只是在构建一个 HelloWorld 来尝试如何在 Spring 中构建一个 RESTful webapp,理论上没有什么复杂的。
我能找到的所有示例都基于注意文件扩展名(“*.htm”或“*.do”)的配置,包括人工目录名称前缀(“/foo”)甚至前缀带点的路径(丑陋),所有使用一些人工正则表达式模式作为解析器信号的方法。对于 REST 方法,我想避免所有这些垃圾,只使用我的应用程序的自然 URL 模式。我会假设(可能是错误的)在 web.xml 中我会设置一个“/*”的 url 模式并将所有内容传递给 DispatcherServlet 进行解析,然后只依赖我控制器中的 URL 模式。
我无法可靠地让我的解析器捕获 URL 模式,并且在我的所有试验中,这都会导致资源未找到错误、堆栈溢出(循环)或某种不透明的 Spring 3 ServletException 堆栈跟踪——一个我对 Spring 的持续不满通常是错误消息通常不是很有帮助。
我想使用 Tiles 2 解析器。我在 WEB-INF/views/ 中找到了我的 *.jsp 文件,并在应用程序根目录中有一个单行 index.jsp 文件,该文件重定向到我的 layout.xml(Tiles 2 配置器)设置的索引文件。
我做了所有正常的 Spring 3 高级配置:
<mvc:annotation-driven />
<mvc:view-controller path="/" view-name="index"/>
<context:component-scan base-package="com.acme.web.controller" />
...随后是 UrlBasedViewResolver、InternalResourceViewResolver、UrlFilenameViewController 等的各种组合和配置,以及我的 Tiles 2 配置文件中的各种变体。然后在我的控制器中,我试图获取我的 URL 模式。问题是,我什至无法可靠地让解析器捕获要发送到我的控制器的模式。
现在已经持续了好几天,在我认为很容易实现的事情上没有真正的进展。我可能试图一次做太多事情,尽管我认为这应该是一个简单的(几乎是默认的)配置。我只是想创建一个简单的 HelloWorld 类型的应用程序,我没想到这是火箭科学。
不是我发布我自己的配置(遍布地图),有谁知道一个在线示例:显示一个使用 REST-ful URL 的简单 Spring 3 MVC + Tiles 2 Web 应用程序(即,避免强制 URL 模式例如文件扩展名、添加的目录名或点)并仅依赖 Spring 3 代码/注释(即,Spring MVC 本身之外的任何内容)来完成此操作?是否有捷径可寻?
非常感谢您的帮助。