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

Netbeans+Tomcat环境下SpringBoot RestController访问报404错误

问题根因

这根本不是上下文路径配置的问题,核心错误是创建项目时选错了模板:你建的是Netbeans默认的传统Spring MVC Java Web项目,不是SpringBoot项目。
你现在能正常访问的/SpringTemplate/index.html,走的是Netbeans自动生成的传统Spring MVC配置逻辑,和你写的SpringBoot启动类、@RestController没有任何关系:

  • 自动生成的web.xml里手动定义了DispatcherServlet,映射规则是仅拦截*.htm后缀的请求,你访问的/hello没有匹配后缀,根本不会被Spring处理,直接返回404
  • 自动生成的dispatcher-servlet.xml是传统Spring的XML配置,只配了index.htm的路由,没有开启注解扫描,你写的WebController根本没被Spring容器识别
  • 你现在是把项目作为war包部署到外部Tomcat启动的,SpringBoot的内嵌Tomcat、自动配置、main方法启动逻辑完全没生效,你加的SpringBoot依赖没有发挥作用。
正确解决方法(推荐,符合SpringBoot使用逻辑)
  1. 清理传统Web项目的冗余配置:
    • 删除WEB-INF目录下的web.xml、dispatcher-servlet.xml、applicationContext.xml
    • 删除自动生成的redirect.jsp、WEB-INF/jsp/下的示例jsp文件
  2. 你之前写的POM依赖和插件配置是正确的,不需要额外添加传统Spring MVC相关依赖。
  3. 在src/main/resources目录下新建application.properties配置文件,如果需要保留/SpringTemplate的项目访问前缀,加一行配置:
    server.servlet.context-path=/SpringTemplate
    
    如果不需要前缀,不用加任何配置,默认上下文路径是/。
  4. 不要用「部署到Tomcat」的方式启动项目,直接在Netbeans里运行你写的Application类的main方法,等控制台打印SpringBoot启动标识后,访问http://localhost:8080/SpringTemplate/hello就能正常返回<h1> Hi!</h1>。

提示:后续创建SpringBoot项目不要选Netbeans的「Java Web 应用」模板,直接选SpringBoot初始化项目向导,生成项目后导入不会自带一堆冲突的传统XML配置。

临时凑用方案(不推荐,本质还是跑传统Spring MVC)

如果你非要保留现有Netbeans生成的项目结构,需要改两处配置才能跑通接口:

  1. 修改web.xml里的DispatcherServlet映射规则,把拦截范围从*.htm改成所有请求:
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  2. 在dispatcher-servlet.xml里补上context和mvc的命名空间,再开启注解驱动和组件扫描,让Spring能识别你写的@RestController:
    <context:component-scan base-package="com.springboot.springtemplate" />
    <mvc:annotation-driven />
    

改完重新部署到Tomcat就能访问/hello接口,但这种方式完全没用到SpringBoot的自动配置能力,后续会遇到大量配置冲突问题,新手不要用这种方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:36:19