当前位置: 首页 > 面试题库 >

Spring MVC ViewResolver没有映射到HTML文件

郗丰
2023-03-14
问题内容

我无法使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"/>


 类似资料:
  • 问题内容: 我正在尝试将HTML映射到结构完整的JSON中。那里有没有这样做的库,还是我需要编写自己的库?我想如果没有html2json库,我可以以xml2json库作为开始。毕竟,html只是xml的一种变体,对吗? 更新: 好的,我应该举一个例子。我想做的是以下内容。解析html字符串: 变成这样的json对象: 注意 :如果您没有注意到标签,我正在寻找Javascript解决方案 问题答案:

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?

  • 我正在尝试使用spring MVC。我的问题是,在我的控制器中没有请求映射工作,只有我的主页链接:“/”工作。 我的web.xml文件是: 2019年5月9日下午4:55:42 org.springframework.web.servlet.dispatcherservlet noHandlerFound警告:GET/springmvc/showform没有映射

  • 基本上我得到了这个控制器: 我得到了那些html页面:这3张图片 索引html工作正常,但login.html和register.html不工作。(它说白标签错误页面此应用程序没有 /error的显式映射,因此您将此视为后备。 Sun Jun 12 02:37:23 CEST 2022出现意外错误(类型=未找到,状态=404) 有什么帮助吗?我迷路了 我的Thymeleaf声明

  • 从控制器返回Html页面时获取此错误 org.springframework.web.servlet.页未找到noHandler已找到警告:没有找到HTTP请求与URI[/SpringMVCDemo/WEB-INF/response.html]在DispatcherServlet名称调度器映射 放在哪里response.html? 这是我的密码

  • 我正在处理symfony2,并发现此错误: 未找到名为“Acme”的映射文件。博客包。实体帖子。类“Acme\BlogBundle\Entity\Posts”的php。500内部服务器错误-映射异常 我生成实体php应用程序/控制台原则:生成:实体 实体名称:AcmeBlogBundle:Post 格式:php 我将所有内容放在Acme:BlogBundle:Entity目录中。 这是我使用get