我收到WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/fomoapp/resources/lib/login.html] in DispatcherServlet with name 'fomo'
错误。以下线程解决方案对我不起作用:
org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI Spring 3
我看到的是应用程序找到了正确的控制器,然后尝试找到我从该方法返回的.html
文件,但不知何故不能这样做。基本上,我正在尝试从resources/lib/
文件夹提供静态资源。目录结构如下:
web.xml
:
WEB-INF/applicationContext
:
WEB-INF/spring/fomo-config.xml
:
,控制器如下所示:
答案 0 :(得分:1)
您的mvc:resources
将所有请求映射到resources/lib
。您应该只映射/resources/**
,否则永远不会调用您的控制器。
Mvc资源"是"一个控制器专门用于客户端的serving
静态资源(js / css / ...),所以你不需要你自己的。
不要将这些资源与要由控制器呈现的模板混合在一起。把它们放到另一个地方,否则它们也会以原始形式提供给客户。
答案 1 :(得分:0)
基本上,我尝试做的是开始将.html
个文件作为视图提供,并且由于指定的扩展名.html
而无法正常工作。将其更改为.jsp
后,事情就开始变得更好了。所以,我猜InternalResourceViewResolver
需要.jsp
s。
这是.jsp
中所需的主要更改(除了将文件重命名为fomo-config.xml
):
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
可以看出,我还以Martin Frey
推荐的方式将静态资源与视图分开。也许这也很重要。
applicationContext.xml
已更改为以下内容:
<!-- Root Context: defines shared resources visible to all other web components -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:default-servlet-handler/>
然后,即使加载了login
页面,其中的静态文件也没有,所以我需要做两件事:
在resources
文件夹中创建另一个webapp
文件夹并移动我的所有资源
以下列方式指定web.xml
内的文件扩展名的映射:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
目录结构现在看起来像这样:
它现在工作正常,但我仍然不确定为什么我们需要main/resources
文件夹,如果我不能访问它,除了通过指定绝对路径在这里解释它的方式:
http://akshaybobde.blogspot.com/2014/07/spring-mvc-serving-images-from-physical.html
我无法删除或移动它:项目不会编译。