Spring Boot对JSP的支持实战(超详细 附源码)

简介: Spring Boot对JSP的支持实战(超详细 附源码)

源码或觉得有帮助请点赞关注收藏后评论区留言~~

尽管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/即可

相关文章
|
1天前
|
设计模式 安全 Java
【初学者慎入】Spring源码中的16种设计模式实现
以上是威哥给大家整理了16种常见的设计模式在 Spring 源码中的运用,学习 Spring 源码成为了 Java 程序员的标配,你还知道Spring 中哪些源码中运用了设计模式,欢迎留言与威哥交流。
|
2天前
|
缓存 Java 开发者
10个点介绍SpringBoot3工作流程与核心组件源码解析
Spring Boot 是Java开发中100%会使用到的框架,开发者不仅要熟练使用,对其中的核心源码也要了解,正所谓知其然知其所以然,V 哥建议小伙伴们在学习的过程中,一定要去研读一下源码,这有助于你在开发中游刃有余。欢迎一起交流学习心得,一起成长。
|
2天前
|
安全 Java 测试技术
Spring Boot集成支付宝支付:概念与实战
【4月更文挑战第29天】在电子商务和在线业务应用中,集成有效且安全的支付解决方案是至关重要的。支付宝作为中国领先的支付服务提供商,其支付功能的集成可以显著提升用户体验。本篇博客将详细介绍如何在Spring Boot应用中集成支付宝支付功能,并提供一个实战示例。
16 2
|
2天前
|
监控 Java 测试技术
Spring Boot与事务钩子函数:概念与实战
【4月更文挑战第29天】在复杂的业务逻辑中,事务管理是确保数据一致性和完整性的关键。Spring Boot提供了强大的事务管理机制,其中事务钩子函数(Transaction Hooks)允许开发者在事务的不同阶段插入自定义逻辑。本篇博客将详细探讨事务钩子函数的概念及其在Spring Boot中的应用。
12 1
|
2天前
|
Java 关系型数据库 数据库
Spring Boot多数据源及事务管理:概念与实战
【4月更文挑战第29天】在复杂的企业级应用中,经常需要访问和管理多个数据源。Spring Boot通过灵活的配置和强大的框架支持,可以轻松实现多数据源的整合及事务管理。本篇博客将探讨如何在Spring Boot中配置多数据源,并详细介绍事务管理的策略和实践。
18 3
|
2天前
|
前端开发 Java 数据安全/隐私保护
Spring Boot使用拦截器:概念与实战
【4月更文挑战第29天】拦截器(Interceptors)在Spring Boot应用中常用于在请求处理的前后执行特定的代码,如日志记录、认证校验、权限控制等。本篇博客将详细介绍Spring Boot中拦截器的概念及其实战应用,帮助开发者理解和利用拦截器来增强应用的功能。
12 0
|
3天前
|
JSON Java 数据处理
Spring Boot与Jsonson对象:灵活的JSON操作实战
【4月更文挑战第28天】在现代Web应用开发中,JSON数据格式的处理至关重要。假设 "Jsonson" 代表一个类似于Jackson的库,这样的工具在Spring Boot中用于处理JSON。本篇博客将介绍Spring Boot中处理JSON数据的基本概念,并通过实际例子展示如何使用类似Jackson的工具进行数据处理。
13 0
|
3天前
|
监控 Java Sentinel
Spring Cloud Sentinel:概念与实战应用
【4月更文挑战第28天】在分布式微服务架构中,确保系统的稳定性和可靠性至关重要。Spring Cloud Sentinel 为微服务提供流量控制、熔断降级和系统负载保护,有效预防服务雪崩。本篇博客深入探讨 Spring Cloud Sentinel 的核心概念,并通过实际案例展示其在项目中的应用。
12 0
|
3天前
|
Cloud Native Java Nacos
Spring Cloud Nacos:概念与实战应用
【4月更文挑战第28天】Spring Cloud Nacos 是一个基于 Spring Cloud 构建的服务发现和配置管理工具,适用于微服务架构。Nacos 提供了动态服务发现、服务配置、服务元数据及流量管理等功能,帮助开发者构建云原生应用。
10 0
|
4天前
|
JavaScript Java 大数据
springboot高精度UWB定位系统源码
UWB (ULTRA WIDE BAND,) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。UWB定位系统依托在移动通信,雷达,微波电路,云计算与大数据处理等专业领域的多年积累,自主研发,开发并产业化的一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的优点。
9 0