springboot和freemarker开发web应用

删除回忆录丶 提交于 2020-03-10 23:46:43

1、创建springboot项目,导入web开发包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2、application.properties添加freemarker配置项

spring.freemarker.enabled=true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.suffix=.ftl
spring.freemarker.check-template-location=true
spring.freemarker.template-loader-path=classpath:/templates
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.expose-spring-macro-helpers=true
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.default_encoding=UTF-8
spring.freemarker.settings.output_encoding=UTF-8
spring.freemarker.settings.url_escaping_charset=UTF-8
spring.freemarker.settings.tag_syntax=auto_detect
spring.freemarker.settings.locale=zh_CN
spring.freemarker.settings.datetime_format=yyyy-MM-dd HH:mm:ss
spring.freemarker.settings.date_format=yyyy-MM-dd
spring.freemarker.settings.time_format=HH:mm:ss

freemarker常用语法

0、null值的处理

!:                #指定缺失变量的默认值
??:                #判断某个变量是否存在
${val!}            #为null输出空白
${val!"默认值"}    #指定默认值

1、字符串输出

${user.name?if_exists}          // 变量存在,输出该变量,否则不输出
${user.name!}            // 变量存在,输出该变量,否则不输出
${user.name?default("xxx")}              // 变量不存在,取默认值xxx  
${user.name!"xxx"}            // 变量不存在,取默认值xxx

${"123<br>456"?html}                  // 对字符串进行HTML编码,对html中特殊字符进行转义    
${"str"?cap_first}                          // 使字符串第一个字母大写     
${"Str"?lower_case}                           // 将字符串转换成小写     
${"Str"?upper_case}                          // 将字符串转换成大写    
${"str"?trim}                                      // 去掉字符串前后的空白字符 

$ {“你好$ {user.name!}”}                //输出你好+变量名  
$ {“hello”+ user.name!}                  //使用+号来连接,输出你好+变量名

<#assign str =“abcd123”/>
$ {str?substring(0,4)}                  //输出abcd
$ { str [ 0 ] } $ {str [4]}                      //结果是a2
$ {str [1..4]}                                     //结果是bcd1
$ {str?index_of("n")}                  //返回指定字符的索引

2、if判断

<#if count > 0>
...
<#elseif ==0>
...
<#else>
...
</#if>

3、集合遍历

1)list

<#list arrays as item>
  ${item_index}    # 取索引下标
  ${item.id}    # 取值
</#list>

2)map

<#if map??>
    <#list map?keys as key>
        key:${key!}
        value:${map[key]!}
        <#-- 如果value是个对象 ${map[key].id!}-->
    </#list>
</#if>

4、时间输出

${date?date}                          #解析日期
${date?time}                          #解析时间
${date?datetime}                      #解析日期+时间
${date?string('yyyy/MM/dd HH:mm:ss')} #自定义格式

5、数字输出

假设account.money 10
$ {account.money?string.number}   //输出10  
$ {account.money?string.currency} //¥10.00  
$ {account.money?string.percent}  //10%  
$ {1.234?int}                    //将小数转为int,输出1  

<#setting number_format ="percent"/>   //设置数字默认输出方式('percent',百分比) 
<#assign content=123 />                          //声明变量回答123  
#{content}                                                  //输出123
${content?string}                                     //输出1,230%
${content?string.number}                        //输出12
${content?string.currency}                       //输出¥123.0 
${content?string.percent}                       //输出1,230%

数字格式化插值可采用#{expr; format}形式来格式化数字,其中格式可以是:
mX:小数部分最小X位
MX:小数部分最大X位
如下面的例子:
<#assign x = 2.582 /> <#assign y = 4 /> 
#{x; M2}       //输出2.58 
#{y; M2}       //输出4 
#{x; m2}       //输出2.58 
#{Y; m2}       //输出4.0
#{x; m1M2}  //输出2.58 
#{x; m1M2}  //输出4.0 

int 对余数取整
<#assign x=5>
${ (x/2)?int } # 2
${ 1.1?int }   # 1

6、申明变量

<#assign foo = false />           //声明变量,插入布尔值进行显示,注意不要用引号
$ {foo?string("yes","no")}   //当为真时输出"yes",否则输出"no"  

7、引入外部文件

1)include引入外部文件
  <#include "head/hearder.ftl">
2)import 引入外部文件
  将引入的文件,放到一个变量中 可以配合macro指令使用
  <#import "head/hearder.ftl" as head>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!