什么是freemarker
java开发的模板引擎,它基于模板来生成静态网页
freemarker用来做什么
基于模板来生成静态网页
freemarker的运行不依赖web容器,可以在java工程中运行
什么是静态网页
静态网页 | 动态网页 |
---|---|
htm、html、shtml、xml | asp、jsp、php、perl、cgi |
不涉及数据库交互 | 需要数据库交互 |
内容固定(除非修改源代码) | 不同的用户请求,时间或者环境生成不同的内容 |
访问url固定,可以直接双击打开 | 访问url中?后内容不固定,不能直接双击打开 |
freemarker+nginx优化实现 | jsp+缓存优化实现 |
freemarker的使用时机
为了防止给用户响应不全或错误信息页面
后台数据修改后,用户第一次访问前
freemarker使用方法
第一步:准备工作
把freemarker的jar包添加到工程中
第二步:创建模板对象
// 创建一个Configuration对象
Configuration configuration = new Configuration(Configuration.getVersion());
//告诉config对象模板所在文件夹的路径,文件夹名称为ftl
configuration.setDirectoryForTemplateLoading(new File("D:\\test\\taotao-portal\\src\\main\\webapp\\WEB-INF\\ftl"));
//设置config的默认字符集
configuration.setDefaultEncoding("utf-8");
//从config对象中获得模板对象。模板名称为first.ftl
Template template = configuration.getTemplate("first.ftl");
第三步:准备模板数据
//创建模板需要的数据集。可以是一个map对象也可以是一个pojo,把模板需要的数据都放入数据集。
Map root = new HashMap<>();
root.put("hello", "hello freemarker");
第四步:在模板对象中用EL表达式读取数据
第五步:生成静态网页
//指定生成的静态网页的保存的路径及文件名
Writer out = new FileWriter(new File("D:\\IdeaProjects\\html\\hello.html"));
//调用模板对象的process方法生成静态文件。需要两个参数数据集和writer对象。
template.process(root, out);
//关闭writer对象。
out.flush();
out.close();
项目中使用freemarker
配置freemarker的项目只用来生成静态页面
先运行该项目将静态页面生成后存储到nginx服务器上
客户请求nginx服务器
第一步:准备工作(添加相关依赖)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
第二步:设置spring配置
<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>