精华内容
下载资源
问答
  • freeMark

    2017-01-16 20:02:31
    freeMark
    freeMark
    展开全文
  • freemark

    2019-04-09 15:40:37
    什么是freemark FreeMarker是一个用Java语言编写的模板引擎,它基于模板输出文本。FreeMarker与Web容器无关,即在Web运行时,它依赖于Servlet或HTTP。它不仅可以用作表现层(html)的实现技术,而且还可以用于生成...

    什么是freemark

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

    **一句话:**freemark就是根据 模板+数据 -->生成静态页面 通常模板用 .ftl作为后缀

    **应用场景:**将热点变更频率少的页面静态化,加快访问速度。减轻服务器压力

    JavaApi 用法

    固定套路 共八步

    @Test
    	public void genHtml() throws IOException, TemplateException{
    //		第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
    		Configuration configuration = new Configuration(Configuration.getVersion());
    		
    //		第二步:设置模板文件所在的路径。  模板文件所在的上级文件夹
    		configuration.setDirectoryForTemplateLoading(new 	   File("D:/src/main/resources/template"));
    
    //		第三步:设置模板文件使用的字符集。一般就是utf-8.
    		configuration.setDefaultEncoding("utf-8");
    		
    //		第四步:加载一个模板,创建一个模板对象。
    		Template template = configuration.getTemplate("hello.htm");
    		
    //		第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
    		Map map = new HashMap();
    		map.put("hello", "hello周周周</br>");
    		map.put("person", new Person(10001, "嬴政"));
    		List<Person> list = new ArrayList<>();
    		list.add(new Person(10002, "秦始皇"));
    		list.add(new Person(10003, "荆轲"));
    		list.add(new Person(10004, "貂蝉"));
    		map.put("list", list);
    		
    		Map map2 = new HashMap<>();
    		map2.put("m1", new Person(10005, "周杰伦"));
    		map2.put("m2", new Person(10006, "蔡依林"));
    		map2.put("m3", new Person(10007, "张惠妹"));
    		
    		map.put("mymap", map2);
    		map.put("date", new Date());
    		
    //		map.put("test", "爱情是个什么东西?");
            
    //		第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。可以任意后缀
    		FileWriter writer = new FileWriter("D:/src/main/resources/template/zcm.html");
    //		第七步:调用模板对象的process方法输出文件。
    		template.process(map, writer);
    //		第八步:关闭流。
    		writer.close();
    	}
    

    在第二步和第四步指定下 已经定位到了模板位置

    在第五步已经定义了 模板数据

    模板 加 数据 == 静态页面

    freemark模板的语法

    创建hello.ftl 模板

    key------value的形式

    map.put("hello", "hello周周周</br>");
    

    对于这个数据在模板引用形式为

    ${hello}
    

    访问pojo中的属性

    map.put("person", new Person(10001, "嬴政"));
    

    对于这个数据在模板引用形式为

    ${person.id?c}----${person.name}   //?c  不显示千分位的,
    

    取集合中的数据

    		List<Person> list = new ArrayList<>();
    		list.add(new Person(10002, "秦始皇"));
    		list.add(new Person(10003, "荆轲"));
    		list.add(new Person(10004, "貂蝉"));
    		map.put("list1", list);
    

    对于这个数据在模板引用形式为

    <#list list1 as item>
    	${item.id?c}---
    	${item.name}</br>
    </#list>
    

    取循环中的下标

    <#list list1 as item>
    	${item_index}
    </#list>
    

    取Map集合中的数据

    	    Map map2 = new HashMap<>();
    		map2.put("m1", new Person(10005, "周杰伦"));
    		map2.put("m2", new Person(10006, "蔡依林"));
    		map2.put("m3", new Person(10007, "张惠妹"));
    		
    		map.put("mymap", map2);
    

    对于这个数据在模板引用形式为

    <#list mymap?keys as key>
    	${key}--
    	${mymap[key].id?c}--
    	${mymap[key].name}</br>
    </#list>
    

    效果

    m1-- 10005-- 周杰伦
    m2-- 10006-- 蔡依林
    m3-- 10007-- 张惠妹
    

    判断

    //上文中的 list
    <#list list as item>
    	<#if item_index%2==0>
    		这是偶数-->${item_index}
    	<#else>
    		这是奇数-->${item_index}
    	</#if>
    </#list>
    

    日期类型格式化

    map.put("date", new Date());
    
    //?date ?time  ?datetime ?string 必须指定 任选其一 
    当前日期${date?date}</br>
    当前时间${date?time}</br>
    当前完整日期${date?datetime}</br>
    当前格式化日期${date?string("yyyy//MM//dd HH:mm:ss")}</br>
    

    Null值的处理

    //		map.put("test", "爱情是个什么东西?");  注意这里注释了 
    

    对于这个数据在模板引用形式为

    ${test!"空空空"}   //如果是null 必须指定! //如果是null--->输出空空空
    ${test!""}  //输出空
    ${test!} 	//输出空
    

    判断NULL

    <#if test??>
    	1没空没空
    <#else>
    	2空了空了
    </#if>
    //test 不为空  执行1
    //test 为空    执行2
    

    Include标签

    <#include "template.htm"/> //取相对路径,包含页面
    

    所有代码显示效果

    在这里插入图片描述

    展开全文
  • Freemark

    2020-08-16 16:14:49
    什么是Freemark? 定义:是一个java语言开发的模板引擎 场景: 页面静态化生成(把一个动态加载数据的页面生成html的过程,叫静态化) 合同模板生成 邮件模板生成 自动生成代码 原理/组成: Template:模板 ...

    什么是Freemark?

    • 定义:是一个java语言开发的模板引擎

    • 场景:

      • 页面静态化生成(把一个动态加载数据的页面生成html的过程,叫静态化)
      • 合同模板生成
      • 邮件模板生成
      • 自动生成代码
    • 原理/组成:

      • Template:模板
      • Model:模板要用到的数据
      • Output:模板+数据渲染后生成的静态html

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vkcdGvk8-1597565608881)(%E7%AC%94%E8%AE%B0.assets/image-20200810154719690.png)]

    • 使用:

      • 导包

        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.23</version>
        </dependency>
        
      • 开发功能

        • 准备模板

          <html>
          <head>
          <meta charset="utf-8">
          <title>Freemarker入门</title>
          </head>
          <body>
          <#--我只是一个注释,我不会有任何输出 -->
          ${name}你好,${message},${user.name}
          </body>
          </html>
          
        • 使用模板输出内容

          • 加载模板

            //1.创建配置类
            Configuration configuration=new Configuration(Configuration.getVersion());
            //2.设置模板所在的目录
            configuration.setDirectoryForTemplateLoading(new File("D:\\ftl"));
            //3.设置字符集
            configuration.setDefaultEncoding("utf-8");
            //4.加载模板
            Template template = configuration.getTemplate("test.ftl");
            
          • 准备数据

            Map map=new HashMap();
            map.put("name", "张三");
            map.put("message", "欢迎来到传智播客!");
            map.put("user", new User());
            
          • 使用Freemark生成内容

            // 第一个参数是数据model
            // 第二个参数是结果的输出流对象
            template.process(map, out);
            

    Freemark的语法

    assign定义的变量比Java变量的优先级高

    • 基本语法

      • 1、文本,直接输出的部分
      • 2、注释,即<#–…-->格式不会输出
      • 3、插值(Interpolation):即${…}部分,将使用数据模型中的部分替代输出
      • 4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
    • FTL指令

      • assign,在模板页面中定义一个变量

        <#assign info={"mobile":"13812345678",'address':'北京市昌平区'} >
        电话:${info.mobile} 地址:${info.address}
        
      • include,引入其他页面到当前模板中

        <#include "head.ftl"/>
        
      • if else 指令,用于判断条件

        <#if success=true>
        你已通过实名认证
        <#elseif success=true>
        你已通过实名认证
        <#else>
        你未通过实名认证
        </#if>
        
      • list 指令,用于遍历集合

        • as固定语法
        <#list goodsList as goods>
        商品名称: ${goods.name} 价格:${goods.price}<br>
        </#list>
        
      • 内置函数

        • 日期
        Last updated date: ${lastUpdated?string('yyyy-MM-dd')}<br>
        Last updated date: ${lastUpdated?date}<br>
        Last updated time: ${lastUpdated?time}<br>
        Last updated time: ${lastUpdated?datetime}<br>
        

    静态生成

    • (1)什么时候生成静态页面比较合适呢?
      • 套餐、检查组、检查项 CRUD时需要重新生成静态页面
    • (2)将静态页面生成到什么位置呢?
      • 生成在webapp下的一个静态页面文件夹
      • 生成一个文件,放置到nginx的目录
    • (3)应该生成几个静态页面呢?
      • 套餐列表
      • 套餐详情(多个页面)

    Spring集成Freemark

    • 导包

       <dependency>
           <groupId>org.freemarker</groupId>
           <artifactId>freemarker</artifactId>
           <version>2.3.23</version>
      </dependency>
      
    • 配置

      <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
          <!--指定模板文件所在目录-->
          <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
          <!--指定字符集-->
          <property name="defaultEncoding" value="UTF-8" />
      </bean>
      

    指定模板文件所在目录–>

      <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
      <!--指定字符集-->
      <property name="defaultEncoding" value="UTF-8" />
    
    ```
    展开全文
  • FreeMark

    2006-01-18 11:24:17
    [url=http://forum.iteye.com/viewtopic.php?p=105319#105319]FreeMark[/url]
    [url=http://forum.iteye.com/viewtopic.php?p=105319#105319]FreeMark[/url]
    展开全文
  • freemark 资料

    2013-04-01 22:23:40
    freemark
  • freemark笔记

    2018-01-27 15:36:56
    freemark
  • freemark文档

    2010-06-17 23:37:12
    freemark文档freemark文档freemark文档freemark文档freemark文档freemark文档
  • Freemark标签

    2013-04-02 15:50:36
    主要介绍了freemark标签的相关基础知识,基本上了解Freemark标签的应用
  • freemark实例

    2013-01-23 08:01:26
    这个我自己学习freemark时自己写的例子,可以运行能够了解freemark简单的知识,像自动生成模板代码什么的功能这里面没有。
  • freemark插件

    2014-03-21 15:41:36
    freemark插件支持智能提示,代码高亮显示,可方便你的开发。 步骤: 1.把压缩包解压到plugins文件下; 2.进入configuration\org.eclipse.equinox.simpleconfigurator文件夹,在bundles.info文件后面添加hudson....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,799
精华内容 3,119
关键字:

freemark