Springboot整合视图层

一般前后端分离开发很少会使用到页面模板,但是在特定的场景还是会使用,比如邮件发送,比如支付等,那么Spring Boot中支持哪些页面模板呢?

  1. Freemarker
  2. Thymeleaf
  3. jsp

目前就支持这三种模板,他们是如何使用的,我们一个一个看

首先整合Freemarker,创建Spring Boot项目引入两个依赖,如下图:

Springboot整合视图层

 

Spring Boot对Freemarker进行了自动化配置,先了解他是如何体现的,以便帮助我们理解?

Springboot整合视图层

 我们可以双击shift,去搜FreemarkerAutoConfiguration,这是Freemarker的一个自动化配置类,里面就两个方法,一个是检查模板的位置,一个是获取这个位置。很简单,那么他的自动化体现在哪里? 在最上边的注解里面:@ConditionalOnClass:这个意思就是当这两个.class文件存在的时候,才会执行下面的方法,也就是当pom.xml 中有有了Freemarker的依赖的时候,就会存在这两个jar文件.进而就会执行下面的方法。

 

接下来就是创建一个实体类,一个Controller,还有一个模板引擎Freemarker

//实体类 package com.bean; public class User { private int id; private String username; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } //Controller类 package com.controller; import com.bean.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import java.util.ArrayList; import java.util.List; @Controller public class UserController { @GetMapping("/user") public String user(Model model){ List<User> list = new ArrayList<>(); for (int i = 0; i <10; i++) { User user = new User(); user.setId(i); user.setUsername("王昭君--" + i); user.setAddress("西安---" + i); list.add(user); } model.addAttribute("list",list); return "user"; } //模板Freemaker <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>user</title> </head> <body> <table border="1"> <tr> <td>编号</td> <td>用户名</td> <td>地址</td> </tr> <#list list as u> <tr> <td>${u.id}</td> <td>${u.getUsername()}</td> <td>${u.getAddress()}</td> </tr> </#list> </table> </body> </html>

这个很简单,就是在模板中展示用户数据,这里要注意的是模板就是一个html,但是后缀名有所不同,我记着以前默认一直是.ftl,但是运行的时候,报错,说找不到我这个模板,后来查了下源码才知道,官方将他的后缀名改成了.ftlh,所以这里要特别注意一下。当然后缀也可以自己配置,这也是Spring Boot中约定大于配置的理念的体现。

我们看一下它的后缀是怎样配置的:

Springboot整合视图层

 

 当然这里可以配置很多东西,像是否开启缓存,编码格式,模板的路径等等。。

下面是运行结果

Springboot整合视图层

 

 在Freemarker中,有很多命令:

  1. if
  2. switch case default  break
  3. list break
  4. include 
  5. import
  6. noparse
  7. escape
  8. assign
  9. setting
  10. macro nested return

差不多常用的就是这些,这个具体的用法,可以去参考freemaker官方文档。

第二个就是Thymeleaf:

Thymeleaf是新一代的模板引擎,支持HTML原型,后缀名是.html,它和freemaker以及jsp有什么区别呢?freemake和jsp要想在页面展示,需要服务器 的渲染才可以,而Thymeleaf直接可以在页面展示。

这个做法的话,可以参考freemaker的步骤进行,唯一不同的处理,就是模板页面命令不同,这个可以参考Thymeleaf的官方文档。

第三个是jsp:

Spring Boot对jsp的支持没有前两个的友好,实际开发中也很少使用jsp,jsp在Springboot中的配置也是比较麻烦的,不像前两个只需要引入依赖,零配置,就可以使用。

jsp具体做法:

1.引入依赖,这个需要手动的加,一个是jsp的解析器(tomcat-embed-jasper),一个是jstl的标签。

2.创建webapp,将jsp页面放在这个目录下。

3.配置视图解析器,创建一个配置类继承webMvcConfigurer ,配置它的访问路径,和后缀名

4.测试(可以仿照freemake的进行)。

原文链接:https://www.cnblogs.com/javazl/p/12630135.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/33212

(0)
上一篇 2024年8月5日
下一篇 2024年8月6日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml