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 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
掌握JSP页面编程:动态生成Web内容
|
2月前
银行营业网点管理系统——修改的页面(updateBreaches.jsp)
银行营业网点管理系统——修改的页面(updateBreaches.jsp)
17 2
|
2月前
新闻发布项目——注册页面(reg.jsp)
新闻发布项目——注册页面(reg.jsp)
14 1
|
2月前
|
JavaScript 前端开发 Java
springboot从控制器请求至页面时js失效的解决方法
springboot从控制器请求至页面时js失效的解决方法
16 0
springboot从控制器请求至页面时js失效的解决方法
|
2月前
|
Java 数据库连接 mybatis
springboot访问jsp页面变成直接下载?
springboot访问jsp页面变成直接下载?
62 0
|
2月前
|
前端开发 Java
java实现动态验证码源代码——jsp页面
java实现动态验证码源代码——jsp页面
14 0
|
2月前
|
JavaScript 前端开发 Java
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
struts+hibernate+oracle+easyui实现lazyout组件的简单案例——Jsp页面
9 0
|
2月前
|
前端开发 Java
java通过commons-fileupload实现多张图片的上传(jsp页面)
java通过commons-fileupload实现多张图片的上传(jsp页面)
16 2
|
2月前
|
JavaScript 前端开发
springboot+layui从控制器请求至页面时js失效的解决方法
springboot+layui从控制器请求至页面时js失效的解决方法
16 0
|
2月前
|
Kubernetes Java 容器
部署 Spring Boot 应用到 K8S 教程
部署 Spring Boot 应用到 K8S 教程
62 0