好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

使用thymeleaf完成页面缓存

直接看Demo

注入redisservice以及其余两个bean.

?

1

2

3

4

5

6

@Autowired

    private RedisService redisService;

    @Autowired

    private ThymeleafViewResolver thymeleafViewResolver;

    @Autowired

    private WebApplicationContext applicationContext;

控制层

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

  @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; 

    }

核心点是

?

1

2

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常用标签(示例代码)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

<!DOCTYPE html>

< html lang = "en" xmlns:th = "http://HdhCmsTestthymeleaf.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主要语法

变量表达式

?

1

   ${...}   //获取上下文中的变量值  

选择变量表达式

?

1

   *{...}   //用于从被选定的对象获取属性值

消息表达式

?

1

   #{...}   //用于Thymeleaf模板页面国际化内容的动态替换和展示

链接URL表达式

?

1

   @{...}   //用于页面跳转或者资源的引入

片段表达式

?

1

   ~{...}   //用来标记一个片段模板,并根据需要移动或传递给其他模板

4.Thymeleaf基本使用

4.1 在SpringBoot项目中使用Thymeleaf模板,必须保证引入Thymeleaf依赖。

?

1

2

3

4

< dependency >

     < groupId >org.springframework.boot</ groupId >

     < artifactId >spring-boot-starter-thymeleaf< artifactId >

</ dependency >

4.2 其次在全局配置文件中配置Thymeleaf模板的一些参数。(如设置模板缓存、模板编码、模板样式、指定模板页面存放路径、指定模板页面名称的后缀)

?

1

2

3

4

5

6

7

8

9

10

#模板缓存开启

spring.thymeleaf.cache= true

#模板编码

spring.thymeleaf.encoding=UTF- 8

#模板样式

spring.thymeleaf.mode=HTML5

#指定模板页面存放路径

spring.thymeleaf.prefix=classpath:/templates/

#指定模板页面名称的后缀

spring.thymeleaf.suffix=.html

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

原文链接:https://blog.csdn.net/weixin_41868360/article/details/81488355

查看更多关于springboot如何使用thymeleaf完成页面缓存的详细内容...

  阅读:12次