栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

freemarker 页面静态化技术

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

freemarker 页面静态化技术

文章目录

一.背景二.页面静态化技术freemarker三.Freemarker基本操作

1.引入依赖:2.创建模板文件:3.FTL指令: 四.freemarker整合spring五.总结:

1.什么是网页静态化技术2.网页静态化技术与缓存技术的比较3.网页静态化技术的应用场景4.什么是FreeMarker

一.背景

用户访问动态页面时都需要通过ajax发送请求查询数据库获取动态数据进行展示,但是这页面的访问量如果比较大且数据库中的数据变化频
率并不高,这就会对数据库造成了很大的访问压力。如何对数据库减压并提高系统运行性能呢?答案就是页面静态化。

页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。

二.页面静态化技术freemarker

FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容
器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还
可以用于生成 XML,JSP 或 Java 等。

三.Freemarker基本操作 1.引入依赖:
 	
	org.freemarker 
	freemarker 
	2.3.23 

2.创建模板文件:

模板文件中有四种元素:

html原生文本注释,即<#-- -->插值::即${…}部分,将使用数据模型中的部分替代输出FTL指令::FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
freemarker模板文件后缀一般为 .ftl

编写模板文件:

 
	
		 
		Freemarker入门 
	
	
<#--我只是一个注释,我不会有任何输出 -->
 ${name}你好,${message} 
 	

通过java结合模板文件生成html文件

public static void main(String[] args) throws Exception{ 

//1.创建配置类 

	Configuration configuration=new Configuration(Configuration.getVersion()); 

//2.设置模板所在的 目录 

	configuration.setDirectoryForTemplateLoading(new File("D:\ftl")); 

//3.设置字符集 

	configuration.setDefaultEncoding("utf-8"); 

//4.加载模板 (模板目录下以ftl后缀的模板文件)

	Template template = configuration.getTemplate("test.ftl"); 

//5.创建数据模型 

	Map map=new HashMap(); 

	map.put("name", "张三"); 

	map.put("message", "欢迎!"); 

//6.创建Writer对象 ,创建html生成的目录

	Writer out =new FileWriter(new File("d:\test.html")); 

//7.输出 

	template.process(map, out); 

//8.关闭Writer对象 

	out.close(); 

}

生成的html文件如下:(对应的$ {name}、$ {message}被成功替换)

 
	
		 
		Freemarker入门 
	
	
 张三你好,欢迎 
 	

3.FTL指令:

assign指令:用于在页面上定义一个变量

    定义一个简单类型

<#assign linkman=“周先生”>
联系人:${linkman}

    定义一个json对象

<#assign info={“mobile”:“123456”,‘address’:‘地球’} >
电话:$ {info.mobile} 地址:$ {info.address}

include指令:用于模板文件的嵌套。一个模板引入另一个模板

hello

<#include "head.ftl"/>

world

最终生成的html文件

hello


world

if 指令:在模板文件中使用指令进行判断

<#if success=true>
	 你已通过实名认证 
<#else>
 	 你未通过实名认证 

在java中:

map.put("success", true);

list指令:list指令用于遍历

模板文件

<#list>
商品名称: ${goods.name} 价格:${goods.price}

java代码

List goodsList=new ArrayList(); 
Map goods1=new HashMap(); 
goods1.put("name", "苹果"); 
goods1.put("price", 5.8); 
Map goods2=new HashMap(); 
goods2.put("name", "香蕉"); 
goods2.put("price", 2.5); 
Map goods3=new HashMap(); 
goods3.put("name", "橘子"); 
goods3.put("price", 3.2); 
goodsList.add(goods1); 
goodsList.add(goods2); 
goodsList.add(goods3); 
map.put("goodsList", goodsList);

以上就是freemarker的基本用法,但是在实际开发中freemarker要远远复杂的多。

四.freemarker整合spring

依赖引入和上面一样:

 	
	org.freemarker 
	freemarker 
	2.3.23 

spring配置文件:

 
 
	
 
 	 
 
 
//生成的html文件所存放的位置
out_put_path=D:/ideaProjects/zj/health_mobile/src/main/webapp/pages

通用生成html文件样式:

 public void generteHtml(String templateName,String htmlPageName,Map map){
        Configuration configuration = freeMarkerConfigurer.getConfiguration();//获得配置对象
        Writer out = null;
        try {
            Template template = configuration.getTemplate(templateName);
            //构造输出流
            out = new FileWriter(new File(outPutPath + "/" + htmlPageName));
            //输出文件
            template.process(map,out);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
五.总结: 1.什么是网页静态化技术

随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。
什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。

2.网页静态化技术与缓存技术的比较

共同点:都可以减小数据库的访问压力。

区别:

(1)缓存技术(例如redis)适用于小规模的数据。以及一些经常变动的数据。

(2)网页静态化技术适用于大规模但是变化不太频繁的数据。

3.网页静态化技术的应用场景

(1)新闻门户网站的文章类型频道一般都用到了网页静态化技术。点击新闻直接会跳到静态化的页面。
(2)电商网站的商品详情页也十分常用,我们在存储商品的时候会生成静态化页面,点击商品详情,会直接跳到生成的商品详情的静态化页面。
(3)网页静态化技术可以结合Nginx这种高性能web服务器来提高并发访问量。

4.什么是FreeMarker

FreeMarker是一款用Java语言编写的模板引擎,用它可以通过模板和要改变的数据来生成输出文本(例如HTML网页,配置文件,源代码等),作为用来实现网页静态化技术的一种手段。FreeMarker的使用率大大超过其他一些技术。对于系统中频繁使用数据库进行查询但是内容更新很小的应用,都可以用FreeMarker将网页静态化,这样就避免了大量的数据库访问请求,从而提高网站的性能。

其他链接:
freemarker官网

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号