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

freemarker模板引擎,一篇文章看懂基本操作与进阶操作

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

freemarker模板引擎,一篇文章看懂基本操作与进阶操作

目录
  • 1 前提
  • 2 freemarker 特性
  • 3 FreeMarker环境搭建
  • 4 简单demo测试创建
  • 5 数据类型
    • 5.1 布尔类型
    • 5.2 日期类型
    • 5.3 数值类型
    • 5.4 字符串类型
    • 5.5 字符串空值情况处理
    • 5.6 sequence 类型
    • 5.7 hash类型
  • 6 常见指令
    • 6.1 assign 自定义变量指令
    • 6.2 if elseif else 逻辑判断指令
    • 6.3 list遍历指令
    • 6.4 marco 自定义指令
    • 6.5 nested 占位指令
    • 6.6 import 导入指令
    • 6.7 include 包含指令
    • 6.8 visit
    • 6.9 Recurse
    • 6.10 Fallback
  • 7 运算符

1 前提

2 freemarker 特性



3 FreeMarker环境搭建

1 创建maven环境





pom 文件里面配置




  4.0.0

  org.example
  FreeMarkerDemo
  1.0-SNAPSHOT
  war

  FreeMarkerDemo Maven Webapp
  
  http://www.example.com

  
    UTF-8
    1.8
    1.8
  

  

    
      org.freemarker
      freemarker
      2.3.23
    

    
      javax.servlet
      javax.servlet-api
      3.0.1
    
  

  
    FreeMarkerDemo

    
      
      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        
        
          
          8080
          
          
          /123
        
      
    

  


我们要告诉我们的项目,哪些是freemarker的资源,所以需要配置




  Archetype Created Web Application
  
  
    freemarker
    freemarker.ext.servlet.FreemarkerServlet
    

      TemplatePath

      /
    

    

      default_encoding
      UTF-8
    
  


  freemarker
  *.ftl



4 简单demo测试创建

@WebServlet("/f01")
public class FreeMarker01 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        给模板的数据
        req.setAttribute("msg","hello word");
//        请求转发到指定的页面,
        req.getRequestDispatcher("template/f01.ftl").forward(req,resp);

    }
}


启动项目,因为已经有插件,所以直接使用maven进行启动




5 数据类型

5.1 布尔类型




ftl文件里面,直接将Boolean类型的值进行展示,是会出错的,会有上面的提示;


5.2 日期类型


    

日期格式

${createTime?date}
${createTime?time}
${createTime?datetime}
${createTime?string("yyyy/MM/dd HH:mm:ss")}

5.3 数值类型

数值类型

${age}
${num}
${avg}
<#--数字过长,会有逗号,可以这样去掉逗号--> ${num?c}
<#-- 将数值转换成货币类型--> ${num?string.currency}
<#--将数值转换为百分比的字符串--> ${avg?string.percent}

5.4 字符串类型

字符串类型
原数据--------转后数据
字符串截取 ${stringxx}---${stringxx?substring(0,2)}
首字母小写输出 ${stringxx}---${stringxx?uncap_first}
首字母大写输出 ${stringxx}---${stringxx?cap_first}
字母转小写输出 ${stringxx}---${stringxx?lower_case}
字母转大写输出 ${stringxx}---${stringxx?upper_case}
获取字符串长度 ${stringxx}---${stringxx?length}
是否以指定的字母开头(Boolean类型) ${stringxx}---${stringxx?starts_with("str")?string}
是否以指定的字母结尾(Boolean类型) ${stringxx}---${stringxx?ends_with("str")?string}
获取指定字符的索引 ${stringxx}---${stringxx?index_of("s")}
去除字符串前后空格 ${stringxx}---${stringxx?trim}
替换指定字符串 ${stringxx}---${stringxx?replace("s","ggg")}
5.5 字符串空值情况处理

5.6 sequence 类型


5.7 hash类型

hashmap


key遍历输出:
<#list hashmap?keys as key> <#-- starts 是list,star 是遍历出来的每一个元素 --> ${key} ------${hashmap[key]}

value遍历输出:
<#list hashmap?values as value> <#-- starts 是list,star 是遍历出来的每一个元素 --> ${value}

6 常见指令 6.1 assign 自定义变量指令

<#--定义一个变量-->
<#assign str= "hello"  >
${str}
<#--定义多个变量--> <#assign str1="world" intx=1> ${str1}
${intx}
6.2 if elseif else 逻辑判断指令

简单判断

<#assign str1=10> <#if str1 lt 60>
你太菜了
<#elseif str1 =60 >
还好
<#else>

判断数据是否存在

<#assign list = ""> <#if list??> 数据存在 <#else> 数据不存在
6.3 list遍历指令

list 指令

<#assign userslist = ["lili","huhu","yueyue"]> <#list userslist as user> ${user} <#list userslist as user> 数据存在 <#else> 数组里面么有数据,走这个逻辑,避免空数据
6.4 marco 自定义指令

自定义指令

自定义指令(宏)


<#--定义一个宏,相当于定义一个变量,名称是address--> <#macro address> 我是定义的变量的值 <#--使用宏-->
<@address> 定义一个有参数的宏
<#macro address11 name age> 我的名字是:${name} ,年龄是:${age}
展示宏里面的东西:
<@address11 name="lili" age=5>
6.5 nested 占位指令

6.6 import 导入指令

6.7 include 包含指令

6.8 visit

visit 指令是用来递归处理树的。

6.9 Recurse

6.10 Fallback 7 运算符



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

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

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