【发布时间】:2015-10-08 02:39:26
【问题描述】:
我正在尝试在不编写显式控制器的情况下配置 spring mvc 应用程序,而仅使用 DispatcherServlet。我很难让它工作(我没有故意添加控制器)。这是我的代码:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
在 JSP 中:
<a href="/myapp/test1.htm">Test1 HTML</a>
我看到以下错误:
[org.springframework.web.servlet.PageNotFound] WARN No mapping found for HTTP request with URI [/myapp/test1.htm] in DispatcherServlet
with name 'dispatcher'
【问题讨论】:
-
这在意料之中。你的目标到底是什么?您将 *.htm 映射到调度程序 servlet。您向 test1.htm 发送请求。所以它转到调度程序 servlet。分派器 servlet 尝试将请求分派到映射到 /test1.htm 的控制器,但没有找到任何控制器,因为您根本没有定义任何控制器,因此它发回 404 错误。
-
您为什么要这样做?对我来说似乎很愚蠢。使用正确的成语书写。
-
我的目标是了解为什么我们需要控制器,而我只想将请求发送到特定资源。 spring mvc的dispatcher servlet是不是不够灵活,无法判断这里没有控制器,dispatcher servlet应该只是将请求路由到test1.htm。如果它足够灵活,那么我只想知道如何去做。
-
听起来您正在寻找视图控制器。
-
将您的
DispatcherServlet映射到/并在您的xml 文件中注册<mvc:default-servlet-handler />。这会将所有未解析的 URI 传递给容器。
标签: java html spring spring-mvc servlets