Spring Boot应用返回字符串而非JSP页面的问题解决方法
Spring Boot返回字符串而非JSP页面问题解决建议
项目相关信息
1. pom.xml配置

2. application.properties配置
#spring.thymeleaf.enabled=true #spring.thymeleaf.prefix=/templates/ #spring.thymeleaf.suffix=.jsp spring.mvc.view.prefix=/templates/ spring.mvc.view.suffix=.jsp
3. Home.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <title>Login Page</title> </head> <body> <h1>Registration</h1> </body> </html>
4. 控制器代码
@RestController public class LoginController { @GetMapping(path="/home") public String loginPage() { System.out.println("hello"); return "home"; } }
5. 启动类代码
@SpringBootApplication public class SpringJspDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringJspDemoApplication.class, args); } }
问题现状
- 访问
/home接口返回字符串"home",而非预期的JSP页面:
- 已尝试操作:启用Thymeleaf、替换
@RestController为@Controller、添加@ComponentScan、调整JSP路径至/webapp/WEB-INF/jsp/,但问题仍未解决。修改控制器注解后请求状态为200,但页面未正确渲染:
,
- 项目结构:

可行解决建议
- 修正视图解析器配置与JSP路径:Spring Boot对JSP的默认支持要求文件放在
src/main/webapp/WEB-INF/[视图路径]下,需同步调整配置和文件位置:- 将
Home.jsp移动到src/main/webapp/WEB-INF/jsp/目录 - 更新
application.properties视图配置:spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
- 将
- 补全JSP相关依赖:检查pom.xml,确保添加以下依赖以支持JSP渲染:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> - 确认控制器注解正确:
@RestController会直接返回字符串响应体,必须替换为@Controller才能触发视图解析:@Controller public class LoginController { @GetMapping(path="/home") public String loginPage() { System.out.println("hello"); return "home"; } } - 排除Thymeleaf冲突:若无需Thymeleaf,删除或注释相关依赖及配置;若需共存,需明确配置视图解析器优先级,避免干扰JSP解析。
- 调整打包方式与启动类:Spring Boot使用JSP需采用
war打包,同时启动类需继承SpringBootServletInitializer:- 在pom.xml中设置打包方式:
<packaging>war</packaging> - 修改启动类:
@SpringBootApplication public class SpringJspDemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringJspDemoApplication.class); } public static void main(String[] args) { SpringApplication.run(SpringJspDemoApplication.class, args); } }
- 在pom.xml中设置打包方式:
内容的提问来源于stack exchange,提问作者Shweta
相关产品推荐
相关产品推荐

