SpringBoot2.x系列教程09--SpringBoot中支持jsp页面

简介: 前言在上一章节中,壹哥 跟大家讲过现在项目比较流行的开发模式,稍微大点的项目一般都是采用前后端分离的开发模式。如果我们的项目采用的是前后端不分离的模式,在SpringBoot中推荐我们使用Themeleaf模板来作为页面。但是咱们都知道,Spring MVC中是支持JSP的,但是在Spring Boot中,其实不建议我们使用JSP。因为SpringBoot自带的嵌入式servlet容器对jsp的解析有使用限制,而且jsp的本质是Servlet,每个页面的加载都需要先进行编译,所以jsp的效率相对于html或Themeleaf都比较低。但是如果你非要在Spring Boot中使用jsp

前言

在上一章节中,壹哥 跟大家讲过现在项目比较流行的开发模式,稍微大点的项目一般都是采用前后端分离的开发模式。如果我们的项目采用的是前后端不分离的模式,在SpringBoot中推荐我们使用Themeleaf模板来作为页面。

但是咱们都知道,Spring MVC中是支持JSP的,但是在Spring Boot中,其实不建议我们使用JSP。因为SpringBoot自带的嵌入式servlet容器对jsp的解析有使用限制,而且jsp的本质是Servlet,每个页面的加载都需要先进行编译,所以jsp的效率相对于html或Themeleaf都比较低。

但是如果你非要在Spring Boot中使用jsp可不可以呢?还是那句话,既然你有这样另类的需求,那 壹哥 就想办法满足你呗,接下来我们就在SpringBoot中实现对jsp的支持。

一. 搭建jsp运行环境

前面我一直在说,本系列教程的所有项目代码,都会在同一个父项目下创建,所以我们继续在之前的项目中创建一个新的模块,创建过程请参考之前的文章。

1. 创建Maven web module

我们这里直接在之前的project中创建一个新的module。

设置新模块的名称,各位随意即可。

2. 改造项目为Spring Boot项目

在新模块demo06的pom.xml文件中,请添加相关依赖和插件。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

3. 添加web相关依赖

这里我们一定要在pom.xml文件中,添加web和jsp等相关依赖包。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- servlet 依赖. --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

4. 在application.properties中配置支持jsp

除了添加上述依赖包之外,我们还要在application.properties配置文件中,设置逻辑视图名等配置信息,添加对jsp的支持,配置jsp模板文件的存放路径。

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

5. 创建webapp目录

然后在src\main\目录下,手动创建出一个新的目录webapp\WEB-INF\jsp\,我们可以在这里存放自己的jsp页面。你可能会问,为什么不把jsp页面直接放到resources目录下呢?这是因为jsp属于动态的页面,而且也不是专门的模板页面,所以我们根据以往的经验,专门创建一个webapp目录进行存放管理。

这里我们自己手动创建出这个目录即可。

二. 进行jsp编码

在上面的章节中,我们把jsp的运行环境编写完毕,接下来就开始编写jsp页面和相关接口。

1. 创建jsp页面

首先我们在上面创建的webapp\WEB-INF\jsp\目录中,创建一个index.jsp文件。

jsp页面内容代码如下:

<%@pagecontentType="text/html;charset=UTF-8"language="java"%><!DOCTYPE HTML><%@taglibprefix="spring"uri="http://www.springframework.org/tags"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><html><head><metacharset="UTF-8"><title>Boot支持JSP!</title></head><body><h2>Hello ${msg}</h2></body></html>

2. 创建一个Controller类

这里我创建一个Controller接口,并在这里进行页面跳转和传值的设置。

packagecom.yyg.boot.web;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.GetMapping;
/*** Spring Boot中支持jsp功能的实现*/@ControllerpublicclassJspController {
@GetMapping("/index")
publicStringindex(Modelmodel) {
model.addAttribute("msg","跟一一哥学习SpringBoot中使用JSP功能!");
//要跳转到的页面视图名称return"index";
    }
}

3. 创建启动类

最后我们在项目的根目录com.yyg.boot下创建一个启动类。

@SpringBootApplicationpublicclassJspApplication  {
//注意:不要直接启动该类,要以spring-boot:run命令方式启动才行,否则404!!!publicstaticvoidmain(String[] args) {
SpringApplication.run(JspApplication.class, args);
    }
}

注意:

我们不要直接利用入口类来启动该项目,要以spring-boot:run命令方式启动才行,否则可能会产生404异常!!!

4. 启动项目

不要直接以启动类的方式来启动项目,请用spring-boot:run命令方式启动才行,否则404!!!

spring-boot:run

该命令可以在当前项目模块的Maven Projects\Plugins中找到。

双击上图中的spring-boot:run即可,当然你如果把maven环境变量都配置好了,也可以用命令行来启动。

5. 运行测试

项目启动起来之后,我们来测试一下jsp页面是否可以展示我们的数据。我们在浏览器中直接访问http://localhost:8080/index接口,即可跳转到对应的jsp页面。

注意:

再次强调一下,请以spring-boot:run命令方式启动!!!

6. 整个项目目录结构

下图展示了当前这个项目的完整包结构,请参考创建。

结语

至此,壹哥 就在SpringBoot中引入的jsp,我们发现也没什么难度,就是稍微比Themeleaf或纯html复杂一点点。

今日小作业:

用jsp页面,编写一个学生信息管理功能页面,实现对学生信息的增删改查。

相关文章
|
1月前
|
Java 应用服务中间件 开发工具
如何使用IDEA创建JSP页面
如何使用IDEA创建JSP页面
128 0
|
1月前
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
203 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
1月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
189 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
20天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
40 2
|
20天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
50 2
|
1月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
66 2
Springboot+shiro,完整教程,带你学会shiro
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
317 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
103 1
springboot的缓存和redis缓存,入门级别教程
|
5天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
18 0
|
1月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
179 0
idea+maven+tomcat+spring 创建一个jsp项目
下一篇
无影云桌面