作者:頃刻想詤嗳伱kYU-2001 | 来源:互联网 | 2023-09-25 17:07
这篇文章,主要介绍SpringBoot框架如何集成JSP、Thymeleaf、Freemarker三种常见的视图模板。目录一、SpringBoot集成JSP1.1
这篇文章,主要介绍SpringBoot框架如何集成JSP、Thymeleaf、Freemarker三种常见的视图模板。
目录
一、SpringBoot集成JSP
1.1、引入JSP依赖
1.2、配置视图前后缀
1.3、创建index.jsp文件
1.4、创建控制器
1.5、添加pom编译目录设置
1.6、运行测试
二、SpringBoot集成Thymeleaf
2.1、引入Thymeleaf依赖
2.2、创建index.html页面
2.3、编写控制器
2.4、运行测试
2.5、添加thymeleaf配置信息
三、SpringBoot集成Freemarker
3.1、引入Freemarker依赖
3.2、创建index.ftlh页面
3.3、编写控制器
3.4、运行测试
3.5、添加Freemarker配置信息
JSP、Thymeleaf、Freemarker三个是非前后端分离模式下,最常见的三种视图技术,一个项目中只需要使用一种视图技术就可以啦,没必要集成多个视图模板,下面就分别介绍SpringBoot如何集成JSP、Thymeleaf、Freemarker视图模板。
PS:首先我们创建一个最基本的SpringBoot工程,引入spring-boot-starter-parent、spring-boot-starter-web依赖。
一、SpringBoot集成JSP
1.1、引入JSP依赖
在springboot工程中,引入三个依赖,分别是:servlet-api、jstl、jasper。
javax.servletjavax.servlet-apiprovidedjavax.servletjstlorg.apache.tomcat.embedtomcat-embed-jasper
1.2、配置视图前后缀
在springboot工程中的【application.yml】配置文件里面,添加视图配置信息,如下所示:
# 设置 JSP 视图
spring:mvc:view:prefix: /WEB-INF/views/ # 设置视图前缀名称suffix: .jsp # 设置视图文件后缀名称
注意:我们需要创建【prefix】前缀的相关目录,这个目录就是用于存放jsp文件的位置。
1.3、创建index.jsp文件
在【src/main/webapp】目录下面,创建【/WEB-INF/views】目录,然后新建一个【index.jsp】文件。
注意:JSP文件需要放在webapp目录里面,才能够被SpringBoot框架访问到。
如下图所示:
![](https://img3.php1.cn/3cdc5/64c2/9f3/12a702a5abb8f67c.png)
jsp文件:
<%@ page cOntentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
SpringBoot集成JSP
1.4、创建控制器
创建一个【TestController】控制器类,编写一个访问【index.jsp】页面的方法。
package com.spring.boot.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;/*** @author ZhuYouBin* @version 1.0.0* @Date: 2022/10/19 22:23* @Description*/
@Controller
@RequestMapping("/api")
public class TestController {@GetMapping("/index")public String index() {// 这里 SpringBoot 框架会将 application.yml 配置文件中的// prefix、suffix 的值,和视图名称拼接起来,如下:// prefix + "/" + index + "/" + suffix// 例如: ”/WEB-INF/views/index.jsp“return "index";}}
1.5、添加pom编译目录设置
SpringBoot框架,集成JSP之后,默认是将jsp资源放在【META-INF/resources】目录下面的,是以我们需要在pom.xml文件里面,添加打包编译的资源路径设置,如下所示:
src/main/webappMETA-INF/resources**/*.*
注意:一定要添加这个,一定要添加这个,一定要添加这个,不然启动的时候,访问会出现404。
添加上面的编译打包路径之后,当我们使用maven打包之后的目录结果就如下所示:
![](https://img3.php1.cn/3cdc5/64c2/9f3/521672d8988041dc.png)
1.6、运行测试
到这里,SpringBoot集成JSP视图技术就基本上结束啦,下面启动工程,访问一下控制器【http://localhost:8080/api/index】,看是否能够成功访问到【index.jsp】页面。
![](https://img3.php1.cn/3cdc5/64c2/9f3/f6eff7dbbe1ccfee.png)
到这里,SpringBoot集成JSP就结束啦,目前JSP的使用不是太多了,下面推荐两个更加好用的模板视图组件。
二、SpringBoot集成Thymeleaf
Thymeleaf是一款模板引擎,SpringBoot框架已经给我们提供了一个Thymeleaf的starter启动器,我们只需要引入这个starter启动器,就能够快速的集成Thymeleaf模板,下面具体介绍。
2.1、引入Thymeleaf依赖
org.springframework.bootspring-boot-starter-thymeleaf
2.2、创建index.html页面
在引入thymeleaf依赖之后,其实我们就已经可以使用thymeleaf,因为SpringBoot已经替我们默认配置好了thymeleaf相关属性,我们只需要在【src/main/resources】目录下,创建一个【templates】目录,然后新建一个【index.html】页面即可,如下图所示。
![](https://img3.php1.cn/3cdc5/64c2/9f3/35350612f4b8f71a.png)
页面代码如下:
SpringBoot集成Thymeleaf
2.3、编写控制器
@Controller
@RequestMapping("/api")
public class TestController {@GetMapping("/index")public String index() {// SpringBoot 会去 templates 目录下面,找到叫做 index 的文件return "index";}}
2.4、运行测试
启动工程,打开浏览器,访问【http://127.0.0.1:8080/api/index】即可,出现下面界面,就表示thymeleaf集成成功啦。
![](https://img3.php1.cn/3cdc5/64c2/9f3/16aeaec0223121a2.png)
2.5、添加thymeleaf配置信息
虽然SpringBoot默认给我们添加了thymeleaf的相关配置,但是一般实际开发里面,我们都会自己手动的声明Thymeleaf的配置,这个时候,我们只需要在【application.yml】配置文件里面,添加【spring.thymeleaf】为前缀的属性即可。
# thymeleaf 相关配置
spring:thymeleaf:prefix: classpath:/templates/ # 定义静态资源存放目录suffix: .html # 定义静态资源文件的后缀名称encoding: UTF-8 # 文件编码字符集mode: HTML # 模板文件类型cache: false # 是否开启静态资源缓存check-template: true # 渲染模板之前,是否检查模板文件是否存在check-template-location: true # 是否检查模板目录是否存在
SpringBoot中thymeleaf的相关配置属性有如下图所示:
![](https://img3.php1.cn/3cdc5/64c2/9f3/6760733f8ed22351.png)
到这里,SpringBoot框架集成Thymeleaf模板引擎就完成啦,之后就是在项目中使用thymeleaf相关的语法,进行页面数据的渲染和展示咯。
三、SpringBoot集成Freemarker
Freemarker和Thymeleaf有点类似,两者都是一个模板引擎,都能够用于渲染页面,只不过语法渲染页面的语法有一些不同,下面具体介绍如何集成Freemarker。
3.1、引入Freemarker依赖
SpringBoot也给我们提供了一个Freemarker的starter启动器,使用的时候直接引入starter启动器即可(和SpringMVC集成Freemarker对比,SpringBoot给我们省去了不少的步骤)。
org.springframework.bootspring-boot-starter-freemarker
3.2、创建index.ftlh页面
SpringBoot框架也默认给我们配置好了Freemarker模板引擎,默认情况下,freemarker模板文件是存放在【src/main/resources】目录中的【templates】目录,并且文件后缀名称默认是【.ftlh】,所以,我们在templates目录下面创建一个【index.ftlh】文件,如下图所示。
![](https://img3.php1.cn/3cdc5/64c2/9f3/b385c196bb73ae7a.png)
具体代码如下:
SpringBoot集成Freemarker
3.3、编写控制器
@Controller
@RequestMapping("/api")
public class TestController {@GetMapping("/index")public String index() {// SpringBoot 会去 templates 目录下面,找到叫做 index 的文件return "index";}}
3.4、运行测试
启动工程,打开浏览器,访问【http://127.0.0.1:8080/api/index】即可,出现下面界面,就表示Freemarker集成成功啦。
![](https://img3.php1.cn/3cdc5/64c2/9f3/a9854c038ee5f953.png)
3.5、添加Freemarker配置信息
同样的,实际开发里面也喜欢将Freemarker的相关配置手动的配置到application.yml文件里面。
# freemarker 相关配置
spring:freemarker:template-loader-path: classpath:/templates/ # 存放模板文件的目录suffix: .ftl # 文件名称的后缀,一般都是设置成 .ftlcharset: UTF-8 # 编码字符集check-template-location: true # 是否检查模板目录是否存在
# prefix: # 文件名称的前缀
SpringBoot中Freemarker的相关配置属性如下图所示:
![](https://img3.php1.cn/3cdc5/64c2/9f3/2218d08b4c69464c.png)
到这里,SpringBoot框架集成Freemarker模板引擎就完成啦,之后就是在项目中使用Freemarker相关的语法,进行页面数据的渲染和展示咯。
综上,这篇文章结束了,主要介绍SpringBoot框架如何集成JSP、Thymeleaf、Freemarker三种常见的视图模板。