springboot如何使用thymeleaf完成页面缓存

 更新时间:2022年06月10日 16:05:12   作者:武大大不吃糖  
这篇文章主要介绍了springboot如何使用thymeleaf完成页面缓存,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用thymeleaf完成页面缓存

直接看Demo

注入redisservice以及其余两个bean.

 @Autowired
    private RedisService redisService;
    @Autowired
    private ThymeleafViewResolver thymeleafViewResolver;
    @Autowired
    private WebApplicationContext applicationContext;

控制层

 @RequestMapping(value="/list",produces = "text/html;charset=utf-8")
    @ResponseBody
    public String showGoods(Model model, MiaoshaUser user, HttpServletRequest request, HttpServletResponse response){
 
        //1.从redis缓存中查询
        String listHtml = redisService.get("goosList",String.class);
        if(StringUtils.isNotEmpty(listHtml)){
            return  listHtml;
        } 
 
        //2.使用thymeleaf模板引擎手动渲染视图
        List<MiaoshaGoods> goodsList = miaoshaGoodsService.selectAllMiaoshaGoods();
        model.addAttribute("user",user);
        model.addAttribute("goodsList",goodsList);
 
       // 无法导入SpringWebContext的包
        SpringWebContext context = new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap(),applicationContext);
        String html = thymeleafViewResolver.getTemplateEngine().process("goods_list",context);
 
        //3.将手动渲染后的html存入redis缓存
        if(StringUtils.isNotEmpty(html)){
            redisService.set("goosList",html);
        }
 
        return html; 
    }

核心点是

SpringWebContext context = new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap(),applicationContext);
String html = thymeleafViewResolver.getTemplateEngine().process("goods_list",context);

thymeleaf简要基础知识 

SpringBoot支持的视图技术之Thymeleaf

1.SpringBoot可整合的模板引擎技术

  • FreeMarker
  • Groory
  • Thymeleaf
  • Mustache
  •   等等

2.Thymeleaf常用标签(示例代码)

<!DOCTYPE html>
<html lang = "en" xmlns:th="http://www.thymeleaf.org">  #引入thymeleaf标签
<head>
    <meta charset = "UTF-8">
    <meta name = "viewport" content = "width = device - width, initial - scale = 1.0">
    <meta http-equiv = "X-UA-Compatible" content = "ie-edge">
    <link rel="stylesheet" type="text/css" media="all" href="../../css/gtvg.css" rel="external nofollow"  th:href="@{/css/gtvg.css}" rel="external nofollow" />  #引入外联样式文件
    <title>Title</title>
</head>
<body>
     <p th:text="#{hello}">Hello world</p>
</body>
</html>

3.Thymeleaf主要语法

  • 变量表达式
  ${...}   //获取上下文中的变量值  
  • 选择变量表达式
  *{...}   //用于从被选定的对象获取属性值
  • 消息表达式
  #{...}  //用于Thymeleaf模板页面国际化内容的动态替换和展示
  • 链接URL表达式
  @{...}  //用于页面跳转或者资源的引入
  • 片段表达式
  ~{...}  //用来标记一个片段模板,并根据需要移动或传递给其他模板

4.Thymeleaf基本使用

  • 4.1 在SpringBoot项目中使用Thymeleaf模板,必须保证引入Thymeleaf依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf<artifactId>
</dependency>
  • 4.2 其次在全局配置文件中配置Thymeleaf模板的一些参数。(如设置模板缓存、模板编码、模板样式、指定模板页面存放路径、指定模板页面名称的后缀)
#模板缓存开启
spring.thymeleaf.cache=true
#模板编码
spring.thymeleaf.encoding=UTF-8
#模板样式
spring.thymeleaf.mode=HTML5
#指定模板页面存放路径
spring.thymeleaf.prefix=classpath:/templates/
#指定模板页面名称的后缀
spring.thymeleaf.suffix=.html

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot最简洁的国际化配置

    SpringBoot最简洁的国际化配置

    这篇文章主要介绍了SpringBoot最简洁的国际化配置,Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架,国际化是一个重要的功能,它允许应用程序根据用户的语言和地区显示不同的内容,在Spring Boot中,实现国际化非常简单,需要的朋友可以参考下
    2023-10-10
  • Spring事务捕获异常后依旧回滚的解决

    Spring事务捕获异常后依旧回滚的解决

    本文主要介绍了Spring事务捕获异常后依旧回滚的解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • SpringBoot动态更新yml文件

    SpringBoot动态更新yml文件

    在系统运行过程中,可能由于一些配置项的简单变动需要重新打包启停项目,这对于在运行中的项目会造成数据丢失,客户操作无响应等情况发生,针对这类情况对开发框架进行升级提供yml文件实时修改更新功能,这篇文章主要介绍了SpringBoot动态更新yml文件
    2023-01-01
  • idea web项目没有小蓝点的的两种解决方法

    idea web项目没有小蓝点的的两种解决方法

    本文主要介绍了idea web项目没有小蓝点的的两种解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • JAVA三种异常处理机制的具体使用

    JAVA三种异常处理机制的具体使用

    异常是程序在编译或执行的过程中可能出现的问题,本文主要介绍了JAVA三种异常处理机制的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • SpringMVC之DispatcherServlet配置文件应该放在哪里呢

    SpringMVC之DispatcherServlet配置文件应该放在哪里呢

    这篇文章主要介绍了SpringMVC之DispatcherServlet配置文件应该放在哪里的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • hibernate的分页模糊查询功能

    hibernate的分页模糊查询功能

    在web项目中,显示数据一般采用分页显示的,在分页的同时,用户可能还有搜索的需求,也就是模糊查询,所以,我们要在dao写一个可以分页并且可以动态加条件查询的方法。接下来通过本文给大家介绍下
    2017-02-02
  • Spring Boot环境下Mybatis Plus的快速应用操作

    Spring Boot环境下Mybatis Plus的快速应用操作

    这篇文章主要介绍了Spring Boot环境下Mybatis Plus的快速应用操作,具有很好的价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 详解springboot shiro jwt实现权限管理

    详解springboot shiro jwt实现权限管理

    为什么使用jwt呢,因为可以通过URL,POST参数或者在HTTP header发送,因为数据量小,传输速度也很快。本篇通过具体代码来进行详情解析,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • Idea2020 无法share项目到svn的解决方法

    Idea2020 无法share项目到svn的解决方法

    这篇文章主要介绍了Idea2020 无法share项目到svn的解决方法,需要的朋友可以参考下
    2020-09-09

最新评论