使用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://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主要语法
- 变量表达式
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