源码或觉得有帮助请点赞关注收藏后评论区留言~~
尽管Spring Boot建议使用HTML完成动态页面,但也有部分Java Web应用使用JSP完成动态页面。下面介绍Spring Boot如何集成JSP技术
环境配置不再赘述 有疑问可以进我主页看前面的博客
1:修改pom.xml文件 添加Servlet Tomcat和JSTL依赖
因为在JSP页面中使用EL和JSTL标签显示数据,所以在pom.xml文件中,除了添加Servlet和Tomcat依赖外,还需要添加JSTL依赖 具体代码如下
<?xml version="1.0" encoding="UTF-8"?> -<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"> <modelVersion>4.0.0</modelVersion> -<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ch</groupId> <artifactId>ch5_4</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ch5_4</name> <description>Demo project for Spring Boot</description> -<properties> <java.version>11</java.version> </properties> -<dependencies> -<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> -<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 添加Servlet依赖 --> -<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> <!--provided 被依赖包理论上可以参与编译、测试、运行等阶段,相当于compile,但是在打包阶段做了exclude的动作。适用场景:例如, 如果我们在开发一个web 应用,在编译时我们需要依赖 servlet-api.jar,但是在运行时我们不需要该 jar包,因为这个jar包已由应用服务器提供,此时我们需要使用 provided 进行范围修饰。--> </dependency> <!-- 添加Tomcat依赖 --> -<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- Jasper是Tomcat使用的引擎,使用tomcat-embed-jasper可以将Web应用在内嵌的tomcat下运行 --> -<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- 添加JSTL依赖 --> -<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <!-- 如果没有指定 scope值,该元素的默认值为 compile。被依赖包需要参与到当前项目的编译,测试,打包,运行等阶段。打包的时候通常会包含被依赖包。--> </dependency> </dependencies> -<build> -<plugins> -<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2:在src/main/目录下创建目录webapp/WEB-INF/jsp/并在该目录下创建JSP文件index.jsp代码如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 引入JSTL标签 --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> </div> <div class="container"> <div> <h4>图书列表</h4> </div> <div class="row"> <div class="col-md-4 col-sm-6"> <!-- 使用EL表达式 --> <a href=""> <img src="images/${aBook.picture}" alt="图书封面" style="height: 180px; width: 40%;"/> </a> <div class="caption"> <h4>${aBook.bname}</h4> <p>${aBook.author}</p> <p>${aBook.isbn}</p> <p>${aBook.price}</p> <p>${aBook.publishing}</p> </div> </div> <!-- 使用JSTL标签forEach循环取出集合数据 --> <c:forEach var="book" items="${books}"> <div class="col-md-4 col-sm-6"> <a href=""> <img src="images/${book.picture}" alt="图书封面" style="height: 180px; width: 40%;"/> </a> <div class="caption"> <h4>${book.bname}</h4> <p>${book.author}</p> <p>${book.isbn}</p> <p>${book.price}</p> <p>${book.publishing}</p> </div> </div> </c:forEach> </div> </div> </body> </html>
然后运行Ch54Application主类 然后访问http://localhost:8080/ch5_4/即可