以下为什么能正常输出

以下为什么能正常输出

在项目同一个包中增加一个类FreemarkerSample3的情况下,将FreemarkerSample1改成FreemarkerSample3,也是可以正常输出的,为什么呢。设置加载的目录是什么意思


FreemarkerSample1代码如下:


import freemarker.core.ParseException;

import freemarker.template.Configuration;

import freemarker.template.MalformedTemplateNameException;

import freemarker.template.Template;

import freemarker.template.TemplateException;

import freemarker.template.TemplateNotFoundException;


public class FreemarkerSample1 {


public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException {

//1、加载模板

//创建核心配置对象

Configuration config=new Configuration(Configuration.VERSION_2_3_31);

//设置加载的目录

config.setClassForTemplateLoading(FreemarkerSample3.class, "");

//得到模板对象

Template t=config.getTemplate("sample1.ftl");

//2、创建数据

Map<String,Object> data=new HashMap<String,Object>();

data.put("site", "百度");

data.put("url", "http://www.baidu.com");

//3、产生数据

t.process(data, new OutputStreamWriter(System.out));

}


}





FreemarkerSample3代码如下:

package com.imooc.freemarker;


public class FreemarkerSample3 {


}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2021-04-21 17:39:59

同学你好,1、Freemarker是一个模板框架,主要是为了加快染速度而产生的。只要是关于模板生成一些代码的都可以使用它完成。

    ​    ​config.setClassForTemplateLoading(FreemarkerSample3.class, "");是Freemarker基于类路径加载模板的目录。这是加载模板的一个步骤。

    2、根据同学的描述,在同一个包中增加一个类FreemarkerSample3,所以FreemarkerSample1和FreemarkerSample3是同一个路径下的文件,所以都是基于这个类路径加载的,所以最后加载正确。

祝学习愉快!

  • 提问者 慕沐1462760 #1
    意思是这行不写也可以吗 config.setClassForTemplateLoading(FreemarkerSample3.class, "");
    2021-04-21 18:28:02
  • 好帮手慕小班 回复 提问者 慕沐1462760 #2

    同学你好,不是,这是加载模板的三个步骤,依次执行步骤,得到加载的模板对象。

    http://img1.sycdn.imooc.com//climg/607fff4709a95bdf07660165.jpg

    这三个步骤并不能随意修改减少。

    祝学习愉快!

    2021-04-21 18:34:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师