2016-03-03 33 views
0

我得到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/文件夾服務靜態資源。的目錄結構如下:

enter image description here

web.xml

enter image description here

WEB-INF/applicationContext

enter image description here

WEB-INF/spring/fomo-config.xml

enter image description here

和控制器如下所示:

enter image description here

+0

嘗試刪除所有'/ resources'目錄引用。我不知道你是否在使用maven,但是如果你是... src/main/resources裏面的所有文件都在你的類路徑上,所以你永遠不需要引用「resources」目錄本身,只有子展位。 –

+0

只是一個快速的評論:在你的配置中有一些我不喜歡的東西:你讓servlet通過你的標籤管理靜態內容,並且同時指示你的控制器管理相同的路徑。您在配置文件中聲明資源路徑只是沒有配置控制器來管理靜態資源!對我來說,如果你需要提供一個靜態html文件,你可以擺脫整個控制器。 – MaVVamaldo

+0

我刪除了'資源'引用,但沒有成功。我試圖直接訪問(無控制器)URL''.html'文件,但不能。 –

回答

1

mvc:resourcesresources/lib所有請求映射。你應該只映射/resources/**,否則你的控制器將永遠不會被調用。

Mvc資源「是」一個控制器專門用於serving靜態資源給客戶端(js/css/...),所以你不需要你自己的。

不要將這些資源與要由控制器呈現的模板混合使用。將它們放到另一個位置,否則它們也將以原始形式提供給客戶。

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加載頁面,靜態文件裏面它是沒有,所以我需要做兩件事情:

  1. webapp文件夾內創建另一個resources文件夾並將其移動到那裏所有資源

  2. 指定映射爲我web.xml以下方式中的文件擴展名:

    <servlet-mapping> 
        <servlet-name>default</servlet-name> 
        <url-pattern>*.css</url-pattern> 
    </servlet-mapping> 
    

的目錄結構看起來像現在這樣:

enter image description here

它現在工作正常,但我我仍然不確定爲什麼我們需要main/resources文件夾,如果我不能通過指定絕對路徑的方式訪問它,請按照以下方式解釋:

http://akshaybobde.blogspot.com/2014/07/spring-mvc-serving-images-from-physical.html

我無法刪除或移動它:項目不會編譯。

+1

'main/resources'文件夾可以通過類路徑訪問,而'webapp'內的文件夾將位於servletpath上。您可以在兩個地點都可以投放,但引用它們會稍有不同。 Spring doc解釋了這一點:http://docs.spring.io/autorepo/docs/spring/3.2.x/spring-framework-reference/html/resources.html –