5

我有一段时间用 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 本身之外的任何内容)来完成此操作?是否有捷径可寻?

非常感谢您的帮助。

4

3 回答 3

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

于 2011-11-02T07:22:37.353 回答
0

您可以尝试 MVC-AJAX Spring 3 示例。

https://src.springframework.org/svn/spring-samples/

于 2010-05-06T05:17:11.530 回答
0

spring 示例应用程序:petcare 具有以宁静的方式定义的链接。您可以从以下网址下载:https ://src.springframework.org/svn/spring-samples/ 步骤如下: 1. 定义瓦片配置 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>
  1. 定义嵌套在 UrlBasedViewResolver 中的瓦片视图类解析器

    value="org.springframework.web.servlet.view.tiles2.TilesView" />

  2. 为每个布局/页面等定义tiles.xml 定义文件。

于 2011-09-09T20:18:17.963 回答