freemarker简单应用

一.初识Freemarker

1.1什么是Freemarker

1.2 数据模型+模板输出=html(输出)

1.3前端设计师和程序员的侧重点

  • MVC设计(Model,View,Controller)
  • 前端设计师侧重于View(模版设计)
  • 后端设计师全面掌握MVC

二.maven构建Freemarker项目

2.1 Maven构建Spring+Freemarker项目

  1. Eclipse+Maven使用简介

    Maven这个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包

  2. Maven依赖Spring和FreeMarker的jar包 
    pom.xml文件主要配置项目所需的jar包(这里包括spring开发所需jar包和freemarkerjar包) 
    freemarker依赖如下

    <dependency>
    <groupid>org.freemarker</groupid>
    <artifactid>freemarker</artifactid>
    <version>2.3.20</version></dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  3. Spring配置文件和Freemarker Servlet配置文件

   (1) Spring配置文件applicationContext.xml

   在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean

   注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。

   (2) Spring Freemarker Servlet配置文件Spring-servlet.xml

       对freemarker的配置(两种方式1:直接配置2:引入单独的文件freemark.properties)

<bean id="freemarkerConfig"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="freemarkerVariables">
            <map>
            </map>
        </property>
    <property name="freemarkerSettings">
        <props>
            <prop key="tag_syntax">auto_detect</prop>
            <prop key="template_update_delay">0</prop>
            <prop key="defaultEncoding">UTF-8</prop>
            <prop key="url_escaping_charset">UTF-8</prop>
            <prop key="locale">zh_CN</prop>
            <prop key="boolean_format">true,false</prop>
            <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
            <prop key="date_format">yyyy-MM-dd</prop>
            <prop key="time_format">HH:mm:ss</prop>
            <prop key="number_format">0.######</prop>
            <prop key="whitespace_stripping">true</prop>
            <prop key="classic_compatible">true</prop>
        </props>
    </property>
</bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

视图配置: 

三.springboot集成freemarker

四.freemarker取值(插值)

4.1java中常常用的数据模型

  1. 基本数据类型(比如Integer)
  2. 封装的数据类型(比如User对象)
  3. 集合类型:List,Map

4.2取值指令

  1. 常用${var}语法进行取值 
    @Controller 
    @RequestMapping(“/”) 
    public class FreemarkerController1 {

    //freemarker取值,插值
    @RequestMapping("/free1")
    public ModelAndView free1(){
        ModelAndView mv1 = new ModelAndView();
        mv1.addObject("intVar",100);
        mv1.addObject("LongVar",10000000000000000L);
        return mv1;
    }}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    整数:intVar长整数:intVar长整数:{LongVar}

  2. 对null,不存在对象取值${var!},这样可以防止抛异常

    对于NUL或不存在的值取值时,需要${var!’默认值’}

  3. 取包装对象的值,通过“点”语法:${User.name}

  4. 取值的时候进行计算,赋值

    变量的赋值运算

    <#assign a=100> 声明变量a值为100. 
    变量运算 
    赋值: a = a显示:a=100;运算:a+100=a显示:a=100;运算:a+100={a + 100} 后面的表示运算 结果显示: a + 100 = 200

  5. Date类型格式${date?String(‘yyyy-MM-dd’)}

    Freemarker支持的是java.sql.Date,可以直接输出,如果使用java.util.Date会报错,可以这样处理:1 使用java.sql.Date转换 2 在模板中使用?string(‘yyyy-MM-dd’)进行转换

  6. 如何注意HTML内容:${var?html}

    ${(userObj.name)!}给userObj.name加括号后再加!(判空符号)表示对整体进行判空,即现对userObj判空,存在后在对name进行判空。添加?html可以输出原始字符串 

4.3逻辑指令:if switch

4.3.1 if

if语法 

if多条件判断 

4.4集合List的遍历

${(userObj.name)!}给userObj.name加括号后再加!(判空符号)表示对整体进行判空,即现对userObj判空,存在后在对name进行判空。添加?html可以输出原始字符串 

4.3.2 switch

每个case都要break,不然会按照顺序执行,还要有一个default,可以没有break,case还支持字符串 

4.4集合Map的遍历

<#list map?keys as key>
${key}(对key取值):${map[key](对value取值)}
<#list>
  • 1
  • 2
  • 3
  • 4

五.自定义函数简介

5.1字符串集合操作

5.1.1string基本操作指令

5.2自定义函数

使用自定义函数:

1 代码中定义:mv.addObject(“sort_int”,new SortMethod());

2 模板中使用:<#assign mylist=[1,2,3,4,5,6] />

5.3自定义指令

自定义指令用@,freemarker内敛指令用# 

自定义指令在Freemarker的配置文件中配置,key为指令名称,value-ref为定义的一个bean 

自定义指令需要实现TemplateDirectiveModel,重写execute方法

5.4freemarker常用内建函数

5.4.1处理字符串的内建函数

subtring:字符截取
cap_first:将字符串的第一个首字母变成大写
ends_with:以什么结尾
contains:是否包含什么
date,datetime,time 将字符串转换为date,datetime,time日期类型
stars_with:以什么开始
index_of:某个字符在某个字符串中从头(0)开始第一次出现的第几个位置(即索引)
last_index_of:某个字符在某个字符串中从尾(字符串.length-1)开始第一次出现的第几个位置(即索引)
split:以某个符号为分隔,将其结果封装成一个数组
tirm:去掉字符串首位的空格
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.4.2处理数字的内建函数

string  x?string("0.##")  对数字进行格式化
round  四舍五入
floor  把小数点去掉 
ceiling 数字进1,变成整数
  • 1
  • 2
  • 3
  • 4
  • 5

5.4.3处理list的内建函数

first  取list第一个值
last  取list最后一个值
seq_contains 这个序列是否包含
seq_index_of  这个序列所在的位置
size list长度
reverse  倒序
sort  升序排序
sort_by  根据属性排序
trunk 把字符串分块处理
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5.4.4其他内建函数

is函数:判断变量的类型
is_string  字符串 
is_number   整数
is_method   方法

() 对变量进行判断
hs_content 判断对象是否是空值,是不是有内容
eval 求值函数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.5freemarker内建函数代码讲解

macro,nested,return语法 
 
macro 代码栗子 

nested 个性化设置 

函数function 调用栗子 

6总结

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值