You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot问题:映射localhost:8080/的方法未被调用

解决Spring Boot中根路径/映射方法未被调用的问题

看起来你的问题是访问localhost:8080/时对应的home()方法没有被触发,我来帮你排查几个常见的原因和对应的解决办法:

1. 静态资源的默认优先级冲突

Spring Boot默认会把根路径/映射到静态资源目录下的index.html文件。如果你的项目中src/main/resources/static或者src/main/resources/public目录下存在index.html,访问/时会直接返回这个静态页面,不会走到你的控制器方法。

解决办法:

  • 如果你不需要这个静态index.html,直接删除它即可;
  • 如果你需要保留静态资源,可修改静态资源的访问路径,在application.properties(或application.yml)中添加配置:
spring.mvc.static-path-pattern=/static/**

这样静态资源需要通过/static/xxx的路径访问,根路径/就会优先匹配你的控制器方法了。

2. 控制器未被Spring Boot扫描到

确保你的控制器类满足以下两个条件:

  • 类上标注了@Controller注解(因为你要返回JSP视图,不要用@RestController,后者会直接返回JSON):
@Controller
public class YourController {
    // 你的index()和home()方法
}
  • 控制器所在的包是Spring Boot启动类所在包的子包或同级包。比如启动类在com.example.demo,控制器要放在com.example.demo.controller这样的子包下。如果控制器在其他路径,需要在启动类上添加@ComponentScan指定扫描范围:
@SpringBootApplication
@ComponentScan(basePackages = {"com.your.package.controller"})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

3. 存在其他映射或拦截器冲突

检查项目中是否有其他控制器也定义了@RequestMapping("/"),或者有没有拦截器对根路径/进行了拦截。可以暂时移除其他相关控制器或拦截器,测试是否能触发home()方法,逐步排查冲突点。

小优化:简化你的方法代码

另外,你的方法参数里注入了ModelAndView但又重新new了一个,其实可以简化写法,避免不必要的注入:

@RequestMapping(value = "/") 
public ModelAndView home() { 
    ModelAndView modelAndView = new ModelAndView("index"); 
    System.out.println("entrou no /"); 
    return modelAndView; 
}

内容的提问来源于stack exchange,提问作者rpsouza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:47:23