Spring Boot运行JSP异常:返回文件名而非页面内容求助
解决Spring Boot返回JSP文件名而非渲染页面的问题
我来帮你排查这个问题哈,你遇到的访问接口直接返回success文件名、没渲染JSP页面的情况,主要是几个配置和依赖缺失的问题导致的,咱们一步步来解决:
1. 添加JSP解析的核心依赖
Spring Boot的spring-boot-starter-web默认没有包含Tomcat解析JSP的核心组件,咱们需要手动添加tomcat-embed-jasper依赖,它负责编译和渲染JSP页面。在你的pom.xml的<dependencies>节点里加入:
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
2. 修改项目打包方式为WAR
你当前的pom.xml里配置的是<packaging>jar</packaging>,但Spring Boot官方对JAR包中的JSP支持有限(不推荐这种组合),改成WAR包更适配JSP场景:
<packaging>war</packaging>
3. 优化视图解析配置与项目结构
- 调整
application.properties的视图前缀,建议加上结尾的斜杠,避免路径拼接时出现问题:spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp - 确认你的
success.jsp文件路径完全匹配配置:必须放在src/main/webapp/WEB-INF/jsp/目录下,这是WAR项目中JSP的标准存放位置。
4. 启动类的规范调整(可选)
如果改成WAR包,让启动类继承SpringBootServletInitializer,这样既可以用IDE直接启动项目,也能把WAR包部署到外部Tomcat服务器上,代码调整如下:
@SpringBootApplication public class SpringbootIndex9Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringbootIndex9Application.class); } public static void main(String[] args) { SpringApplication.run(SpringbootIndex9Application.class, args); } }
做完这些调整后,重新构建并启动项目,再访问http://localhost:8080/first,应该就能正常渲染出success.jsp里的welcome内容啦!
内容的提问来源于stack exchange,提问作者Saipriyadarshini Bandi
相关产品推荐
相关产品推荐

