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

Spring Boot中@GetMapping映射不符合预期问题求助

关于Spring Boot中@GetMapping映射机制与你的JBoss部署问题解析

一、@GetMapping的核心工作机制

@GetMapping是Spring MVC专门处理HTTP GET请求的注解,核心作用是将特定路径的GET请求绑定到控制器的对应方法上,规则如下:

  • 映射路径是相对于应用上下文路径(即你提到的myurl/prototype1/)来计算的:比如@GetMapping("/")对应上下文根路径myurl/prototype1/,@GetMapping("/test")对应myurl/prototype1/test。
  • Spring Boot默认会自动识别静态资源(如index.html),当某个路径没有控制器方法处理时,会自动去src/main/resources/static、public等目录下查找匹配的静态文件。

二、你的问题原因分析

  1. 最初用@GetMapping("/")时访问根路径空白
    此时控制器方法覆盖了根路径的请求,但你的方法可能没有返回有效内容(比如直接返回空字符串、未指定视图名称),同时原本的静态index.html被控制器映射优先级覆盖,所以显示空白。

  2. 改成@GetMapping("/test")后的矛盾现象

    • 根路径myurl/prototype1/不再有控制器方法处理,Spring Boot自动找到静态资源目录下的index.html,所以能正常显示修改后的页面。
    • /test路径的控制器方法依然没有返回有效内容(和第一次的问题本质一样),所以访问时还是空白。

三、解决步骤

  1. 检查控制器方法的返回逻辑
    • 如果要返回HTML视图(比如Thymeleaf页面),确保方法返回视图名称,且对应文件在templates目录下,同时引入Thymeleaf依赖:
      @Controller
      public class DemoController {
          @GetMapping("/test")
          public String showTestPage() {
              return "test"; // 对应templates/test.html
          }
      }
      
    • 如果要直接返回字符串/JSON内容,使用@RestController或在方法上加@ResponseBody:
      @RestController
      public class DemoController {
          @GetMapping("/test")
          public String testResponse() {
              return "Hello from test path";
          }
      }
      
  2. 确认静态资源位置
    把静态HTML文件放在Spring Boot默认识别的目录:src/main/resources/static、public或resources下,根路径会自动加载index.html。
  3. 清理JBoss缓存
    部署后若代码未生效,手动清理JBoss的tmp和work目录,避免旧缓存干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:48:18