pom.xml文件需要额外添加如下依赖(关键):

<!-- 引入SpringBoot内嵌Tomcat对jsp的解析依赖,不添加这个解析不了jsp -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
		</dependency>
		<!--注意:spring boot对jsp的支持不是很好,在使用spring boot自带tomcat的同时,还需要引入另外的一个tomcat,以来如下所示,且scope属性需要被注释掉 -->
		<!--注掉的原因是:maven默认scope是compile,表示打包时会把此包打入jar包中,而provided表示打包时不会打如jar包中,因为它默认是jar包中会提供,说白了就是你标注了provided就不会被打入jar包中,项目跑起来就肯定会有问题了 2019/12/4 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
<!--			<scope>provided</scope> 注意,这个scope需要被注释掉 -->
		</dependency>
		<!-- jsp标签库 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<scope>provided</scope>
		</dependency>

application.properties如下配置:

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

对应文件目录设置如下:
文件目录设置
index.jsp文件源码如下:

<%@ page contentType="text/html; utf-8" pageEncoding="utf-8"  language="java" %>

<html lang="en">
<html>
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
Welcome!${user.name}
</body>
</html>

Controller层添加如下测试代码:

@Controller
public class HelloController {
 
    @RequestMapping("/hello")
    public ModelAndView hello(){
        User user = new User();
        user.setName("hello world");
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("user",user);
        return mv;
    }
}

最后前端显示结果如下:
前端页面显示结果

注意:

在pom.xml文件中要去除springboot标配的thymeleaf的依赖,否则会报500错误:

<!--		<dependency>-->
<!--			<groupId>org.springframework.boot</groupId>-->
<!--			<artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!--		</dependency>-->

推测是thymeleaf模板引擎会与前面对JSP的依赖配置冲突,具体原因先占个坑,后面在做研究。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐