SpringBoot 默认是使用的模板引擎(Thymeleaf)
使用SpringBoot 和 JSP整合如下:
添加依赖
<!-- 添加 JSP 相关依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
// 解析JSP的依赖,如果这个jar包没有导入成功,则会出现404情况
// tomcat-embed-jasper 主要用来支持 JSP 的解析和运行
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- 整合 JSP -->
接下来我们在 src/main 目录下新建 webapp 文件夹,并新建 jsp 文件,最终的目录结构如下:
需要对视图解析进行配置,SpringBoot默认解析是以 **.html** 结尾,需要在配置文件中指定 jsp 的目录和后缀名称,在 resources/application.properties 文件中增加如下配置:
spring.mvc.view.prefix: /WEB-INF/pages/
spring.mvc.view.suffix: .jsp
-
spring.mvc.view.prefix 指明视图文件在 webapp 下的哪个目录
-
spring.mvc.view.suffix 指明视图文件的文件后缀名
后面就可以测试了:
在 pages 目录下新建 hello.jsp 文件,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp整合</title>
</head>
<body>
information : ${info}
</body>
</html>
在 controller 包下新建 JSPController,代码如下:
package com.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JSPController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("info", "Spring Boot 整合 JSP");
return "hello";
}
}
当访问 /hello 路径时会被代码中的 hello() 方法处理,并封装 info 字段到 model 对象中,之后转发到对应的视图,根据前面配置文件的设置,我们知道该方法最终会跳转到 /WEB-INF/pages/hello.jsp 中,如果不存在该文件则会报错,否则就会显示 JSP 页面内容。