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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:25:26