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

Spring Boot中RestController无法返回HTML页面问题求助

Spring Boot访问HTML页面仅返回"Index"字符串的解决方法

问题场景

自行创建HTML页面,直接在IntelliJ中打开显示正常,但通过Spring Boot的IndexController访问时仅返回"Index"字符串。当前Controller代码如下:

@RestController
@AllArgsConstructor
@RequestMapping(path = "/webpage")
public class IndexController {

        @GetMapping(path = {"mainpage"})
        @ResponseBody
        public String index(){
            return "Index";
        }
    
        @PostMapping("/check")
        public String CheckDataset(@ModelAttribute CheckModel checkModel){
            System.out.println(checkModel);
            return null;
        }
    
}

问题原因

  1. @RestController是@Controller与@ResponseBody的组合注解,使用该注解的Controller所有方法默认会把返回值直接作为响应体返回,不会触发视图解析加载HTML页面。
  2. index()方法额外添加了@ResponseBody注解,进一步强制返回字符串,而非跳转至视图。

解决方案

1. 修改Controller注解与方法

将@RestController替换为@Controller,并移除index()方法上的@ResponseBody注解,让方法返回视图名称(对应你的HTML页面文件名):

@Controller
@AllArgsConstructor
@RequestMapping(path = "/webpage")
public class IndexController {

    @GetMapping(path = {"mainpage"})
    public String index(){
        // 返回HTML页面的文件名(不含后缀),Spring会自动查找对应页面
        return "index";
    }

    @PostMapping("/check")
    public String CheckDataset(@ModelAttribute CheckModel checkModel){
        System.out.println(checkModel);
        // 可返回成功页面或重定向回主页面
        return "index"; // 或使用重定向:"redirect:/webpage/mainpage"
    }
}

2. 确保HTML页面放置位置正确

Spring Boot默认从以下位置加载视图/静态资源:

  • 静态资源:将HTML放在src/main/resources/static目录下,无需额外依赖,直接通过返回文件名访问。
  • 模板引擎(如Thymeleaf):将HTML放在src/main/resources/templates目录下,需添加对应依赖:
    Maven依赖示例:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:44