动态网页静态化模板技术FreeMarker

动态网页静态化

  • 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>
	
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值