day56-57,13-14,网页静态化解决方案Freemarker,入门案例,FTL指令,Freemarker应用到品优购上架中,消息中间件解决方案JMS简介,和Linux安装搭建

什么是freemarker:
freemarker是apache的一个开源的模板引擎.
作用:
freemaker模板引擎可以通过模板和数据生成静态化页面.
优点:
1. 提前根据模板和数据生成静态化页面通过io流将页面写入到硬盘上, 访问的时候直接访问.
就不用访问数据库了, 可以大大提高数据库的高并发读取性能. 使数据库访问量降低.
2. 由于页面是提前生成好的, 所以访问速度快, 客户体验好
3. 由于html不需要tomcat解析浏览器可以直接访问, 所以给tomcat降低高并发访问压力.

使用场景:
a. 新闻网站新闻页面通过freemarker提前生成好
b. 电商网站商品详情页面通过freemarker提前生成好
原则: 页面有固定的样式, 并且一次生成多次读取, 尽量少的改动数据
和freemarker同类型的数据:
velocity也是一个模板引擎框架, 但是现在被freemarker替代了.
freemarker生成静态化页面:
页面 = 模板 + 数据
模板: 模板在freemarker中是以.ftl为后缀名的文件, 在模板中可以使用html标签, css, js,图片等静态资源
模板中可以使用el表达式获取数据, 但是无法使用jstl标签来判断和循环, 所以模板引擎会有自己的一套
标签库供我们使用.
数据:
数据一般存储在关系型数据库或者redis或者mongodb中, 获取.

1.3 Freemarker入门小DEMO

1.3.1工程引入依赖, jar工程

  <dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.23</version>
	  </dependency>  

1.3.2创建模板文件
模板文件中四种元素
1、文本,直接输出的部分
2、注释,即<#–…-->格式不会输出
3、插值(Interpolation):即${…}部分,将使用数据模型中的部分替代输出
4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出。
我们现在就创建一个简单的创建模板文件test.ftl

<html>
<head>
	<meta charset="utf-8">
	<title>Freemarker入门小DEMO </title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出  -->
${
   name},你好。${
   message}
</body>
</html>

这里有文本、插值和注释
1.3.3生成文件

使用步骤:
第一步:创建一个 Configuration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是 utf-8.
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
第六步:创建一个 Writer 对象,一般创建一 FileWriter 对象,指定生成的文件名。
第七步:调用模板对象的 process 方法输出文件。
第八步:关闭流

代码:
创建Test类 main方法如下:

public class TestFreemarker {
   

    public static void main(String[] args) throws Exception {
   
        //1. 创建模板引擎初始化对象,import freemarker.template.Configuration 包路径下
        Configuration conf = new Configuration();
        //2. 加载模板所在目录位置
        conf.setDirectoryForTemplateLoading(new File("D:\\Code\\freemarkerDemo\\src\\main\\resources\\ftl"));
        //3. 加载模板对象
        Template template = conf.getTemplate("test.ftl");
        //4. 模拟假数据, 这个数据是需要放入模板中的
        Map<String, Object> rootMap = new HashMap<String, Object>();

        /**
         *  模板获取string类型数据
         */
        rootMap.put("name", "张三");
        rootMap.put("message", "欢迎来到神奇的品优购世界!");
        //5. 创建io流, 流中指定文件的输出位置和文件名
        Writer out = new FileWriter(new File("hello.html"));
        //6. 生成
        template.process(rootMap,out);
        //7. 关闭流
        out.close();
    }
}

执行后,在项目路径根目录即可看到生成的test.html ,打开看看

1.4 FTL指令

此指令用于在页面上定义一个变量
(1)定义简单类型:

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

(2)定义对象类型:

<#assign info={
   "mobile":"13301231212",'address':'北京市昌平区王府街'} >
电话:$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值