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

使用Spring Boot和View注解配置ViewResolver并没有为带有URI错误的HTTP请求找到映射

曹高阳
2023-03-14
问题内容

我正在尝试使用最简单的视图解析器和html创建gradle,spring boot和spring mvc的“ hello world”应用程序。

我从thymeleaf春季启动示例开始,我只是想删除thymeleaf,以使用纯html和InternalResourceViewResolver创建一个更简单的mvc应用程序。我要提供一个单独的greeting.html文件,它位于src
/ main / webapp / WEB-INF。当我运行应用程序时,我得到

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

这是一个常见的错误,网络上有很多答案,但似乎无济于事。

这是我的Application.java

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

这是我的GreetingController.java

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

这是我的MvcConfiguration.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

以下是一些线索:

  • Thymeleaf视图解析效果很好
  • InternalResourceViewResolver解析为正确的路径
  • 战争档案中似乎存在WEB-INF和greeting.html
  • 我没有jsp或jstl,所以我不会像某些人建议的那样错过那些罐子

我的假设是,调度程序servlet以某种方式配置为在/
*上使用,而不是像在这里和其他地方那样在
/上使用。但是我没有web.xml,所以这些建议在这里不适用。我看到很多示例,这些人如何以编程方式配置调度程序servlet,但我想使我的应用程序最少,并且我怀疑spring
boot应该可以正常配置它,因为它可以与thymeleaf正常工作。


问题答案:

您只需要启用默认的servlet,这是通过将以下内容添加到您的MvcConfiguration

@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),而这种配置就是告诉它将其委派给容器的方式。



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

  • 我试图使"你好世界"应用与gradle,Spring引导和Springmvc与最简单的视图解析器和html。 我从thymeleaf spring启动示例开始,我只想删除thymeleaf,使用纯html和InternalResourceViewResolver创建一个更简单的mvc应用程序。我只有一句问候语。我想提供的html位于src/main/webapp/WEB-INF。当我运行应用程序时

  • 我想配置文件中缺少一些东西,但我看不到。 当我放入浏览器-->localhost:8080/procura/notifications-->我在控制台中得到的是-->org.springframework.web.servlet.DispatcherServlet noHandlerFound警告:在名为“DispatcherServlet”的DispatcherServlet中没有找到URI[/

  • 在学习Spring时,我试图运行Spring in Action的代码示例,但它向我展示了tomcat日志中提到的以下错误: 我正在尝试仅借助基于java的配置来配置spring。相同的代码如下所述: TestProjectInitializer.java WebConfig.java 根配置.java HomeController.java pom.xml web.xml 目录结构 请帮助我了解

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

  • 很抱歉再次问这种问题,但我无法通过查看其他线程和Spring doc来解决我的问题。 我正在使用maven的3.1.0.RELEASE,并尝试使用注释和java配置。 以下是我的web.xml: 这是我的档案web-application-config.xml. 我有两个类。第一个配置视图解析器 第二个定义我的控制器: 根据我的配置,我想一切都应该指向我的home()函数。然而,事实并非如此,以下