Spring Boot Web应用报错:DispatcherServlet未找到URI [/]的请求映射
从你提供的日志、配置和代码来看,核心问题是DispatcherServlet找不到根路径/的请求映射,同时还有几个配置和代码细节需要调整,下面一步步帮你解决:
1. 给根路径添加控制器映射
你目前没有任何控制器处理/路径的请求,这是导致日志警告的直接原因。创建一个简单的控制器类,比如HomeController,放在主启动类的同级或子包下(Spring Boot默认扫描主类所在包及子包):
package com.tecnologias.airbnb; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(Model model) { // 如果需要给页面传参,比如hello.jsp里的${name},可以在这里添加 model.addAttribute("name", "你的名字"); // 返回视图名,对应你放在WEB-INF/views下的jsp文件(不用加前缀后缀,配置会自动拼接) return "index"; // 或者返回"hello"对应hello.jsp,看你的需求 } }
2. 修正tomcat-embed-jasper的依赖范围
你的pom.xml里tomcat-embed-jasper的scope设为了provided,这在直接用Spring Boot启动的开发环境中会导致JSP无法被正确渲染——provided意味着这个依赖只在编译、测试阶段可用,运行时不会被包含。把它改成compile或者直接移除scope属性:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <!-- 移除scope="provided" --> </dependency>
3. 确认JSP文件的存放路径
根据你application.properties里的配置spring.mvc.view.prefix: /WEB-INF/views/,所有JSP文件必须放在src/main/webapp/WEB-INF/views/目录下。一定要确保index.jsp和hello.jsp都在这个路径里,不然Spring找不到对应的视图文件。
4. 修复index.jsp的语法错误
你提供的index.jsp有两处明显的语法错误,这会导致页面渲染失败:
<h1>标签没有闭合(少了</h1>)<form>标签没有写完
修正后的代码如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <!-- 静态资源引用 --> <link rel="stylesheet" href="/resources/css/style.css"> <script type="text/javascript" src="/resources/js/app.js"></script> <title>Spring Boot</title> </head> <body> <h1>Spring Boot - Prueba de MVC</h1> <hr> <div class="form"> <form action="/your-action-path" method="post"> <!-- 这里可以添加表单元素,比如输入框、按钮等 --> <input type="submit" value="提交"> </form> </div> </body> </html>
5. 验证静态资源的存放位置
你的spring.mvc.static-path-pattern: /resources/**配置是正确的,但要确保静态资源放在src/main/resources/static/目录下:
css/style.css→src/main/resources/static/css/style.cssjs/app.js→src/main/resources/static/js/app.js
这样才能通过/resources/css/style.css这类路径正常访问到静态资源。
做完以上所有调整后,重启你的Spring Boot应用,再访问localhost:8080应该就能正常加载页面了。
内容的提问来源于stack exchange,提问作者Opresor

