模板引擎(Freemarker为例)

模板引擎是一种替代jsp动态显示数据,实现前后端分离的一种技术手段

Freemarker

简单入门
https://www.cnblogs.com/itdra...
Freemarker生成增删改查及相关文件

使用Freemarker自动生成后端代码
http://www.pianshen.com/artic...
https://www.cnblogs.com/tenny...
SpringBoot代码生成器
http://www.pianshen.com/artic...;jsessionid=B9C108862E3817779D1A09D1BF18BB27

quick-start

引入依赖spring-context-support/spring-boot-starter-freemarker
配置spring.freemarker.suffix: .html

ftl变量

在ftl文件中,以形如${User.username}或者${username}表示变量
Freemarker不允许变量为空值null,如果ftl文件中含有空值变量会报错,为了避免这种情况可以使用默认值的方式,形如!""
单一变量
只对一个变量有效

${username!""}

页面内声明
对页面中的所有变量都有效

<#escape x as x!"">
...

在web.xml中的FreemarkerServlet中配置
整个项目都有效

    
            classicCompatible
            true
    

ftl中的日期和数字显示

日期格式类似java的SimpleDateFormatter格式
数字表示中,0.00表示必须保留两位,0.##表示可以保留两位

日期:${date?string["yyyy-MM-dd"]},数字:${number?string["0.##"]}

ftl的集合遍历

其中?counter ?item_parity 表示当前第几个元素,奇偶性
#else表示如果未取到数据,就该标签之后的内容

list集合
    <#list mylist as e>
  • ${e?counter}:${e}:${e?item_parity}
  • <#else> 数据不存在
map集合
    <#list mymap?keys as e>
  • ${e?counter}:${e}
    <#list mymap?values as e>
  • ${e?counter}:${e}
    <#list mymap?keys as e>
  • ${e?counter}:${e}-${mymap[e]}

固定循环次数

            <#list 1..10 as i>
                
  • ${i}
  • 动态循环

                <#list 1..(booklist.totalPage)!0 as i>
                    
  • ${i!""}
  • 常见的内置函数

    集合的长度:${mylist?size}

    字符串的长度:${word?length}

    集合拼接:${mylist?join(",")}

    大小写转换:${word?upper_case} ${word?uncap_first} ${word?cap_first}

    Freemarker与Servlet集成

    在web.xml中配置

        
        
            freemarker
            freemarker.ext.servlet.FreemarkerServlet
            
                TemplatePath
                /WEB-INF/content/fm
            
            
                ContentType
                text/html;charset=UTF-8
            
    
            
                template_update_delay
                0
            
            
                default_encoding
                UTF-8
            
            
                classicCompatible
                true
            
            1
        
        
            freemarker
            *.ftl
        

    SpringMVC与Freemarker的整合

    当在Springmvc-servlet.xml中配置时,就不用在web.xml中配置
    其中,pom.xml必须要有Spring-context-support和freemarker的依整

        
        
            
            
            
            
        
        
            
            
            
        
    
    
        
        
            
            
            
                
                    true
                    UTF-8
                    0
                
            
        

    thymeleaf

    你可能感兴趣的:(模板引擎)