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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关文章