2016-07-05 65 views
1

我剛剛開始使用Spring MVC。 使用IntelliJ創建了一個默認模板,現在我試圖添加一些內容。Spring MVC使用.html

頁面的默認擴展名爲.jsp,但我想將我的頁面更改爲.html擴展名,但無法弄清楚。

所以我有about.jsp文件,我想將其更改爲about.html。 我改變了自身的文件名和文件mvc-dispatcher-servlet.xml在我改變:

<property name="suffix" value=".jsp"/> 

要:

<property name="suffix" value=".html"/> 

我的變化後,我得到:

05月-2016 15:31 :25.788警告[http-nio-8082-exec-1] org.springframework.web.servlet.PageNotFound.noHandlerFound在DispatcherServlet中找不到具有URI [/WEB-INF/view/pages/about.html]的HTTP請求的映射,名字'mvc-dispatcher'

還有一個404狀態的頁面。

這是我的目錄樹:

Working dir

MVC-調度-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:component-scan base-package="com.weitz.alex"/> 

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

web.xml中

<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Spring MVC Application</display-name> 

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 

</servlet-mapping> 

HelloController.java

package com.weitz.alex; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
@RequestMapping("/") 
public class HelloController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(ModelMap model) { 
     model.addAttribute("message", "Hello world!"); 
     return "about"; 
    } 
} 
+1

這會幫助你。請訪問http://stackoverflow.com/questions/15479213/how-to-serve-html-files-with-spring – tinku

回答

0

刪除此行<property name="suffix" value=".html"/>因爲HTML頁面是靜態的處理它作爲resource這些行添加到configuration

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

沒有必要用viewresolver來處理這個問題。

並將控制器中的return語句更改爲此。

return "redirect:/pages/about.htm";

0

在我看來像您遺漏了您的.html頁面資源映射。 嘗試添加一個到您的mvc-dispatcher-servlet.xml。 一個例子可能是這樣的:

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

對於你的問題的更詳細的說明,你也可以看看this答案,其中顯示了一個非常類似的問題的解決方案。


我也建議你改變你的文件夾結構,把你的文件名爲"/static/resources/"或類似的文件夾中,因爲您的.html文件是靜態的(你的JSP文件沒有)。

你的前綴和後綴屬性看起來像他們應該工作正常。