2

我決定創建一個沒有JSP的Web應用程序時,遇到了這個問題,但只使用目錄WEB-INF /頁面下的HTML頁面。如何在Spring中爲html創建視圖解析器?

我做的視圖解析:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="WEB-INF/pages/"/> 
    <property name="suffix" value=""/> 
</bean> 

而且我已經導入的所有資源在WEB-INF /頁:

<mvc:resources mapping="/**" location="WEB-INF/pages/"/> 

我的控制器有以下幾種觀點:

@PreAuthorize("isAuthenticated()") 
@RequestMapping("/") 
public String indexPage() { 
    return "redirect:/index.html"; 
} 

它可以很好地映射「/」(重定向到登錄頁面,如果沒有通過驗證),但它不保護網址「/ in由於導入此頁面爲靜態資源,因此「dex.html」(但是如果不導入它,它根本不起作用)。

回答

2

最後,我找到了解決方案。也許,任何人都會感興趣。我有的主要servlet映射有url-pattern:/ ** 這就是我的問題。正如我理解好歹截獲的ViewResolver主要的servlet即使有這樣的配置:<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".html"/> </bean>

當我做的servlet的配置使作爲下一個:

<servlet-mapping> 
    <servlet-name>main</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

一切都變得正常。

+0

/app模式(或類似的東西)可以幫助我們區分Dispatcher- Servlet保留的內容與其他類型內容。但是,我們有一個 實現細節(具體來說,/ app路徑)暴露在我們的URL中。 導致複雜的URL重寫策略來隱藏/ app路徑。 Spring in Action 3rd Edition page 192 – Adelin

0

我不知道你爲什麼要這麼做.....如把頁面下的WEB-INF是一種錯誤的做法.......

也容器不能訪問的靜態內容在web-inf文件夾下。我遇到了完全相同的問題,請參閱resource problem post

我發現從谷歌搜索是你可以訪問web-inf文件夾下的動態資源,但不是靜態的。我曾嘗試在xml中首先將所有的靜態內容(即.ssc,js,html等)進行regestring,但沒有任何工作。最後我提出我的網頁出來,它沒有配置工作....

所以儘量把資源從WEB-INF和下web內容

告訴我,如果你有這方面的一些附加功能。

謝謝。

+0

其實最好的做法是把文件作爲WEB-INF下的視圖,以避免直接訪問 – Oscar

相關問題