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

Spring Boot应用返回字符串而非JSP页面的问题解决方法

Spring Boot返回字符串而非JSP页面问题解决建议

项目相关信息

1. pom.xml配置

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/[视图路径]下,需同步调整配置和文件位置:
    1. 将Home.jsp移动到src/main/webapp/WEB-INF/jsp/目录
    2. 更新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:
    1. 在pom.xml中设置打包方式:
      <packaging>war</packaging>
      
    2. 修改启动类:
      @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);
          }
      }
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:52:36