Spring Boot多HTML页面展示异常求助:仅返回字符串而非页面
解决Spring Boot返回HTML页面而非字符串的问题
核心问题分析
你使用了@RestController注解,这个注解等价于@Controller + @ResponseBody,会把方法返回值直接作为HTTP响应体输出,所以控制器返回的"thick_client"会以纯字符串形式返回,不会被视图解析器处理成对应的HTML页面。
修复步骤
1. 修改控制器注解
将@RestController替换为@Controller,这样Spring会把方法返回的字符串识别为视图名称,交给视图解析器匹配对应的HTML文件:
@Controller public class ApiController { @Autowired private StockRepository stockRepository; @RequestMapping(value = "/", method = RequestMethod.GET) public String index() { return "thick_client"; } @RequestMapping(value = "/anotherIndex", method = RequestMethod.GET) public String anotherIndex() { return "thin_client"; } }
2. 优化依赖配置
spring-boot-starter-web已经包含了spring-webmvc,无需单独引入该依赖,避免版本冲突,修改后的pom.xml依赖如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
3. 确认视图解析配置
你当前的application.properties配置是正确的:
spring.mvc.view.prefix=/ spring.mvc.view.suffix=.html
prefix=/会指向Spring Boot默认的静态资源根目录(src/main/resources/static),suffix=.html会自动为返回的视图名称拼接后缀,刚好匹配你目录中存放的thick_client.html和thin_client.html。
验证
重启Spring Boot应用后,访问根路径/会加载thick_client.html,访问/anotherIndex会加载thin_client.html。
内容的提问来源于stack exchange,提问作者judo_ürgens
相关产品推荐
相关产品推荐

