页面静态化可用应用场景:文章详情页面,可将文章详情页面生成固定的静态页面,放入到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中直接访问静态化页面.
将静态化页面抽取为单独的方法,应用到保存文章的模块上即可.