一、通过Maven坐标集成jsp
JSP需要如下的三个依赖提供运行环境
内嵌的 tomcat容器,spring-boot-starter-web 包含了 spring-boot-starter-tomcat ,所以不需要再单独引入。
tomcat-embed-jasper 主要用来支持 JSP 的解析和运行。
jstl ,提供给Java Web开发人员一个标准通用的标签库。开发人员可以利用这些标签取代JSP页面上写Java代码,从而提高程序的可读性,降低程序的维护难度。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring boot 内置tomcat jsp支持 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--jsp页面使用jstl标签-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
二、配置JSP查找位置
我们需要通过配置告诉Spring Boot在进行页面渲染的时候,去哪里寻找JSP文件
spring:
mvc:
view:
suffix: .jsp
prefix: /WEB-INF/jsp/
debug: true
spring.mvc.view.prefix 指明 jsp 文件在 webapp 下的哪个目录
spring.mvc.view.suffix 指明 jsp 以什么样的后缀结尾。一定是/WEB-INF/下的目录,否则后面我们打包会报错。
这个目录结构和配置文件指定的位置对应,一定不要放错了。
静态资源,如:图片放在resources/static目录下面
jsp文件放在webapp.WEB-INF.jsp的下面
三、代码测试
@Controller
@RequestMapping("/template")
public class TemplateController {
@Resource
ArticleService articleService;
@GetMapping("/jsp")
public String index(String name, Model model) {
List<ArticleVO> articles = articleService.getAll();
model.addAttribute("articles", articles);
//模版名称,实际的目录为:src/main/webapp/WEB-INF/jsp/jsptemp.jsp
return "jsptemp";
}
}
jsptemp.jsp
文本代码如下
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/webjars/bootstrap/css/bootstrap.min.css">
</head>
<body>
<table class="table">
<tr>
<td>作者</td>
<td>教程名称</td>
<td>内容</td>
</tr>
<c:forEach var="article" items="${articles}">
<tr class="text-info">
<td>${article.author}</td>
<td>${article.title}</td>
<td>${article.content}</td>
</tr>
</c:forEach>
</table>
<img src="/image/jsp.png">
<script src="/webjars/jquery/jquery.min.js "></script>
<script src="/webjars/bootstrap/js/bootstrap.min.js"></script>
</body>
注意img标签的静态资源引用路径与实际存放路径之间的关系。
四、运行方法测试
访问:http://localhost:8888/template/jsp,因为jsp对jar运行的方式支持不好,所以要一一进行测试,结果如下:
使用IDEA启动类启动测试,没有问题
使用spring-boot:run -f pom.xml测试,没有问题
打成jar包通过java -jar方式运行,页面报错
打成war包,运行于外置的tomcat,没有问题(后面章节会为大家讲解如何打war包)
所以,目前无法用jar包的形式运行jsp应用,至少我没有实验成功。