Spring MVC ViewResolver没有映射到HTML文件

我无法使Spring MVC解决.html视图文件。

我具有以下视图文件夹结构:

WEB-INF

`-views

|- home.jsp

`- home.html

我有一个简单的hello world控制器方法,该方法只显示一条消息并返回视图名称“ home”。我有一个home.jsp文件,但想改用home.html。

<!-- Working servlet mapping --> 

<servlet-mapping>

<servlet-name>spaceShips</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<!-- working servlet context -->

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="WEB-INF/views/" />

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

</beans:bean>

当我击中spaceships/home时,控制器会打印出“ hello world”消息,并且我看到home.jsp视图没有问题。

问题是当我将后缀更改为.html时。

更改后缀并导航到/ home后,控制器将打印该消息,但是我在浏览器中以及控制台中的以下消息中看到404错误:警告:找不到带有URI [/ spaceships / WEB-INF / views的HTTP请求的映射/home.html]

To clarify:

<!-- not working with .html -->

<servlet-mapping>

<servlet-name>spaceShips</servlet-name>

<!-- I have tried /* here as well without success -->

<url-pattern>/</url-pattern>

</servlet-mapping>

<!-- not working with .html-->

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="WEB-INF/views/" />

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

</beans:bean>

我已经签入爆炸的war文件夹,可以确认两个主文件都存在。

有人遇到过这样的事情吗?

控制台消息的最后一块:

INFO: Server startup in 5256 ms

Hello, World!

Jul 27, 2014 12:52:01 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound

WARNING: No mapping found for HTTP request with URI [/spaceships/WEB-INF/views/home.html] in DispatcherServlet with name 'spaceShips'

谢谢阅读。

===========解决方案===========

以下(丑陋的)配置解决了该问题。可能有多种方法可以解决此问题,但是如果遇到相同的问题,则可以从中组合出解决方案。

Folder structure:

 WEB-INF

`-static

|-html

`-home.html

|-css

`-img

Controller method:

 @RequestMapping(value = "/home")

public String goHome() {

System.out.println("lolololololol");

return "static/html/home";

}

spring配置:

 <resources mapping="/static/**" location="/WEB-INF/static/" />

<beans:bean

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<beans:property name="prefix" value="" />

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

</beans:bean>

回答:

简单来说:

为了在spring使用静态资源(html,css,img,js),请使用类似于以下内容的目录结构:

src/

package/

LayoutController.java

WebContent/

WEB-INF/

static/

html/

layout.html

images/

image.jpg

css/

test.css

js/

main.js

web.xml

springmvc-servlet.xml

@Controller

public class LayoutController {

@RequestMapping("/staticPage")

public String getIndexPage() {

return "layout.htm";

} }

<!-- in spring config file -->

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

layout.html

<h1>Page with image</h1>

<img src="/static/img/image.jpg"/>

以上是 Spring MVC ViewResolver没有映射到HTML文件 的全部内容, 来源链接: utcz.com/qa/412320.html

回到顶部