一、Freemarker简介
网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO。
另外我们如果将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署。Nginx可以承载5万的并发,而Tomcat只有几百。
二、配置步骤
1、web项目中导入FramMarker JAR包
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
2、main.resources.spring 的 applicationContext-service.xml 文件中加入
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
(1) 为了指定ftl模板所在位置;
(2) 指定编码方式
3、在模板指定位置建立所需要的模板
/WEB-INF/ftl/ 因该是WEBAPP下,建立相应的ftl文件;
4、在实现类中使用这一工具
(1)注入
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
@Value("${pagedir}")
private String pagedir;
(2)使用
使用步骤:
第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是 utf-8.
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
第七步:调用模板对象的 process 方法输出文件。
第八步:关闭流
//1.获取configuration对象
Configuration configuration = freeMarkerConfig.getConfiguration();
//2.加载模板对象
Template template = configuration.getTemplate("item.ftl");//此处自动从指定路径下寻找
//3.创建一个模板使用的数据集
Map dataModel=new HashMap<>();
//4.加载一些数据
dataModel.put("goods", goods);
//5.创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名
Writer out=new FileWriter(pagedir+goodsId+".html");
//6.调用模板对象的 process 方法输出文件
template.process(dataModel, out);
//7.关闭流
out.close();
5、可以在模板上使用指令在实现