当前位置: 首页 > 知识库问答 >
问题:

使用Spring Boot和注释配置ViewResolver未找到URI错误的HTTP请求的映射

潘雅珺
2023-03-14

我试图使"你好世界"应用与gradle,Spring引导和Springmvc与最简单的视图解析器和html。

我从thymeleaf spring启动示例开始,我只想删除thymeleaf,使用纯html和InternalResourceViewResolver创建一个更简单的mvc应用程序。我只有一句问候语。我想提供的html位于src/main/webapp/WEB-INF。当我运行应用程序时,我得到

No mapping found for HTTP request with URI [/WEB-INF/greeting.html] in DispatcherServlet with name 'dispatcherServlet'

这是一个常见的错误,网上有很多答案,但似乎没有任何帮助。

这是我的pplication.java

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这是我的问候ontroller.java

@Controller
public class GreetingController {
    @RequestMapping("/greeting")
    public String greeting() {
        return "greeting";
    }
}

这是我的MVC配置。JAVA

@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".html");
        return resolver;
    }
}

我用gradle bootRun运行它

这是带代码的回购:https://github.com/driver-pete/spring-mvc-example

这里还有一些线索:

  • 胸腺叶视图解决工程罚款
  • InternalResourceViewResolver解决了正确的路径
  • WEB-INF和greeting.html似乎存在于战争文件中
  • 我没有jsp或jstl,所以我不会像有些人建议的那样错过那些罐子

我的假设是调度员servlet以某种方式被配置为服务于/*而不是/像这里和任何地方。然而,我没有web.xml所以这些建议不适用于这里。我看到很多例子如何配置调度servlet编程,但我想保持我的应用程序在最低限度,我怀疑Spring引导应该配置它确定,因为它与thymeleaf工作正常。

共有3个答案

公孙高轩
2023-03-14

在进一步研究之后,我发现了一个替代解决方案,它可以在不添加configureDefaultServletHandling方法的情况下工作。您需要添加一个嵌入式tomcat jsp引擎来构建。格拉德尔:

compile("org.apache.tomcat.embed:tomcat-embed-jasper")

与configureDefaultServletHandling方法不同,此解决方案不仅适用于普通html,而且适用于jsp。

所有解决方案均可从以下网址获得:https://github.com/driver-pete/spring-mvc-example此解决方案在master上可用。Biju的解决方案位于DefaultServletHandling_解决方案分支上。

胥宏义
2023-03-14

视图解析器也可以配置在Spring-Boot Web应用程序application.properties文件中,如下所示:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
庞元青
2023-03-14

您只需要启用默认servlet,这可以通过将以下内容添加到MVC配置中来实现:

@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/");
        resolver.setSuffix(".html");
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }    
}

本质上,Spring不知道如何在本地处理这些内容(可能是jsp),而这种配置是告诉它将其委托给容器的方法。

 类似资料:
  • 问题内容: 我正在尝试使用最简单的视图解析器和html创建gradle,spring boot和spring mvc的“ hello world”应用程序。 我从thymeleaf春季启动示例开始,我只是想删除thymeleaf,以使用纯html和InternalResourceViewResolver创建一个更简单的mvc应用程序。我要提供一个单独的greeting.html文件,它位于src

  • 我使用的是仅注释配置,服务器启动,但当我访问某个页面时,错误显示: 警告:在名为“org”的DispatcherServlet中,找不到URI为[/WEB-INF/view/main.jsp]的HTTP请求的映射。springframework。网状物servlet。调度员Servlet-d7259e' 控制器映射工作正常,但没有加载JSP页面。 我用的是Jetty 9.2.0。M0和Spring

  • Dispatcher servlet(servlet-context.xml) http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xs

  • 我写了一个spring boot项目。它有三个文件。 appconfig.java HelloController.java 当我尝试运行它时,它出现了错误“没有为名为'DispatcherServlet中URI[/springc1_01/]的HTTP请求找到映射”。这是因为服务器没有找到控制器还是其他原因?THX.

  • 我正在尝试学习Spring Security性,第一个代码示例是在运行URL“http://localhost:8080/spring-security-helloworld-xml/welcome”并使用jetty插件作为服务器时出现这样的错误。 错误:org.springframework.web.servlet.pageNotFound noHandlerFound警告:在名为“mvc-di

  • 我使用的是从web下载的代码,是Spring MVC Hibernate Maven Spring数据的一个示例,在这段代码中,页面是jsp。现在我想介绍Thymeleaf而不是jsp si,我已经创建了一个HTML问候页面,但是当我进入这个页面时,我得到了这个错误 09:16:23.622[http-nio-8080-exec-7]警告o.s.web。servlet。PageNotFound-在