Freemarker页面静态化

页面静态化可用应用场景:文章详情页面,可将文章详情页面生成固定的静态页面,放入到nginx或者minio中,后面查询就不再访问数据库了。

实现步骤

1.添加依赖

快速搭建和开发基于Spring MVC的Web应用程序依赖 spring-boot-starter-web

freemarker依赖spring-boot-starter-freemarker

apache对java io 的封装用具库commons-io

2.启动类,标注@SprinBootApplication

3.配置文件与模板文件

注意配置文件sping.freemarker.suffix为模板文件尾缀,template-loader-path为模板文件储存位置

classpath(类文件目录):/templates/,idea中一般就放在resources下建立templates目录

模板文件为前端提供,${}中的东西为后端应从数据库中查询替换的东西

4.控制器

注意不再是@RestController注解了,因为不是返回json字符串,而是返回模板+数据拼接后的html文件,reurn回去的是你模板文件尾缀前的名称,如basic.ftl中是basic.

控制器传入的方法参数Model为spring自带的Map,可用model.addAttribute添加集合.

5.文件存入位置minIO

可设计freemarker生成静态化页面存入到minIO中,相关模块自动类上需要@ComponentScan添加minio的扫描包,配置文件中写好服务器地址与桶的名称bucketName.

6.freemarker解决文章详情静态化页面技术

根据文章id查询文章内容,新建HashMap,将数据放入到map中,准备好模板和输出流形式将数据和模板整合,弄成输出流,输出流官方建议StringWriter,模板注入maven freemarker提供的Configuration,

configuration.getTemplate("模板名包含尾缀")获取模板template,template.process(model,writer),将Writer流转为ByteArrayInputStream字节输入流,再根据文件类型和文档名称(文档名称的字符串拼接按公司要求来)上传到minio中,模板设计模式调用minio的upload方法.

文章详情展示的html的url地址储存到文章数据库中即可,到时访问文章详情就不再查询数据库返回大量的文字,而是通过生成好的html的url路径从minio中直接访问静态化页面.

将静态化页面抽取为单独的方法,应用到保存文章的模块上即可.

你可能感兴趣的:(微服务项目复习总结,java)