如何使用 REST-ful URL 创建 Spring 3 + Tiles 2 webapp?
Posted
技术标签:
【中文标题】如何使用 REST-ful URL 创建 Spring 3 + Tiles 2 webapp?【英文标题】:How do I create a Spring 3 + Tiles 2 webapp using REST-ful URLs? 【发布时间】:2010-04-20 23:59:34 【问题描述】:我正忙着用 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 本身之外的任何内容)来完成此操作? 有没有简单的方法可以做到这一点?
非常感谢您的帮助。
【问题讨论】:
我也在尝试通过 Spring 的 RESTful URL 将 Spring 3 Web MVC 与 Apache Tiles 结合使用。我可以得到一个要渲染的页面,但是我从 Tomcat 获得了无限递归,我怀疑这是来自根 servlet 映射<url-pattern>/</url-pattern>
。
【参考方案1】:
<bean id="tilesviewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver"
p:order="0"/>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-defs/tilesConfig.xml</value>
</list>
</property>
</bean>
见TilesViewResolver
【讨论】:
【参考方案2】:您可以尝试 MVC-AJAX Spring 3 示例。
https://src.springframework.org/svn/spring-samples/
【讨论】:
链接的示例不使用 Apache Tiles。【参考方案3】:spring 示例应用程序:petcare 具有以宁静的方式定义的链接。 您可以从以下地址下载:https://src.springframework.org/svn/spring-samples/ 步骤是: 1.定义tiles配置bean(配置xml文件)
<!-- Initializes the Apache Tiles CompositeView system -->
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name="definitions">
<beans:value>
/WEB-INF/**/tiles.xml
</beans:value>
</beans:property>
<beans:property name="checkRefresh" value="true" />
</beans:bean>
定义嵌套在 UrlBasedViewResolver 中的瓦片视图类解析器
value="org.springframework.web.servlet.view.tiles2.TilesView" />
为每个布局/页面等定义tiles.xml定义文件
【讨论】:
以上是关于如何使用 REST-ful URL 创建 Spring 3 + Tiles 2 webapp?的主要内容,如果未能解决你的问题,请参考以下文章
在邮件程序中使用 REST-ful link_to 时出现问题
在 REST-ful api 中序列化外键字段的最佳实践是啥
springboot中使用spring security,登录url就出现403错误