动态网页静态化
-
1.动态网页和静态网页的区别:
- ①动态网页:数据可变,但是访问速度相对于静态网页要慢很多,因为少了前后台数据查询和传输这个过程
- ②静态网页:数据不可变,访问速度很快,SEO排名会更靠前
-
2.如何实现动态网页的静态化处理 ? 模板技术
- ①什么是模板技术? 模板技术从本质上来讲,他是一个占位符动态替换技术
- ②模板技术有哪些?
- Velocity (常用)
- XSLT
- Tapestry
- Freemarker
-
3.使用模板的步骤
- ①获取模板文件
- ②取得数据对象
- ③合并模板和数据内容(模板+数据=输出文本)
-
4.Velocity (常用)等几种模板的比较
-
Velocity
变量定义:用$标志
表达式语句:以#开始
强控制语言:变量赋值:#set $this = “Velocity”
外部引用:#include ( $1 )
条件控制:#if …. #end
非兼容语言 JDynamiTe
变量定义:用{}包装 -
XSLT
变量定义:xml标签
表达式:xsl标签
强控制语言:外部引用:import,include
条件控制:if, choose…when…otherwise -
Tapestry
采用component的形式开发。
变量定义(组件定义):在html标签中加上jwcid
表达式语句:ognl规范 -
FreeMaker:是比较流行的一个模板技术【ftl】
-
-
5.FreeMarker模板技术的实现
使用freemarker的步骤(以后只需要百度查找即可)
1.导包(freemarker是一个小框架)
2.创建一个配置对象Configuration(加个版本)
3.设置加载路径
4.设置字符集(默认)
5.创建模板(准备一个ftl模板)
6.准备数据(Map,对象)
7.数据+模板=输出文件(Writer)
ps:代码实现
import static org.junit.Assert.*;
import java.io.File;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import cms.domain.User;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* 测试模板freemaker
*
* 1.导包
* 2.创建一个配置对象 (传递一个版本 )
3.设置模板加载路径
4.设置一个模板编码
5.获取一个模板对象
6.获取一个数据
7.生成文件
*
*
*/
public class FreemarkerTest {
@Test
public void testMap() throws Exception {
//1.导包
//2.创建一个配置对象。传入一个版本
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
//3.设置模板加载路径
cfg.setDirectoryForTemplateLoading(new File("F:/eclipse3/workplace-ee/cms/src/test/java/cms/freemaker"));//这里是我自己的项目路径
//4.设置默认字符集
cfg.setDefaultEncoding("UTF-8");
//5.获取模板对象
Template template = cfg.getTemplate("index.ftl");
//6.获取一个数据
Map hashMap = new HashMap<>();
hashMap.put("username", "名字");
FileWriter fw = new FileWriter(new File("F:/eclipse3/workplace-ee/cms/src/test/java/cms/freemaker/index.html"));//生成一个文件,指定文件的位置
//生成一个文件
template.process(hashMap,fw );
fw.flush();
}
@Test
public void testObj() throws Exception {
//1.导包
//2.创建一个配置对象。传入一个版本
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);
//3.设置模板加载路径
cfg.setDirectoryForTemplateLoading(new File("F:/eclipse3/workplace-ee/cms/src/test/java/cms/freemaker"));
//4.设置默认字符集
cfg.setDefaultEncoding("UTF-8");
//5.获取模板对象
Template template = cfg.getTemplate("index.ftl");
//6.获取一个数据
User user = new User();
user.setUsername("张三");
user.setAge(20);
//生成一个文件
template.process(user, new FileWriter(new File("F:/eclipse3/workplace-ee/cms/src/test/java/cms/freemaker/index1.html")));//生成文件
}
}
- 下面是一个通过模板类创建的实例:
- 模板 ,以ftl结尾
public class ${ClassName} {
<#list classlist as filed>
private ${filed.type} ${filed.filedName} ;
</#list>
<#list classlist as filed>
public ${filed.type} get${filed.newname}() {
return ${filed.filedName};
}
public void set${filed.newname}(${filed.type} ${filed.filedName}) {
this.${filed.filedName} = ${filed.filedName};
}
</#list>
}