FreeMarker的几个重要作用

最近几周一直在研究FreeMarker,重要也是有个朋友然找我帮忙看一个系统问题,用到了FreeMarker。这个系统完全没有一个真正意义上的界面,而全部由模板组成。所有的前台展示的要素属性信息,都是存到数据库中,显示的时候,数据模型与模板进行整合,形成页面,展示到前台(没有性能问题的,并不是每次都动态生成,有缓存,也有临时生成的html文件)。
这种模式给我震撼很大,因为我们常说MVC,其本质就要,M与V完全分离,全部要通过C来控制。但是事实,在开发程序的时候,我们还是有图省事,在展现页面写大量的java,甚至有把业务逻辑直接写在展现页面。这个过程是非常不好的。
而是用模板就有强制要求,模板是通用的(当然如果写的很烂,每一个前台界面一个模板,那我就吐血了 FreeMarker的几个重要作用)。而模板唯一能做额仅仅只展现,将展现形成的数据交给C来进行处理。
模板还有一个好处,就是可以形成前台组件化管理。我这个朋友他们这个系统,新增页面(Add)、编辑页面(Edit)、查询页面(List)都是独立的模板(当然这些组件比较大了,Grid、Tab这样的也可以用模板来进行组件化管理),需要展现的信息就在数据库里面配,配一个页面就前台就展现一个页面(哦,忘说了,url也是配置的,因为SpringMVC的url是逻辑url,可以通过数据库的机制直接配置);这样就使得开发一个前台系统(不含业务逻辑)的过程是非常非常容易。
FreeMarker的基本原理:
模板:
<p>And BTW we have these fruits:<ul>
<#list whatnot.fruits asfruit>
<li>${fruit}
</#list>
<ul>
<#是FreeMarker的控制符。我们在java传入一个HashMap参数,这个map的key值是 whatnot,对象类型仍然是HashMap,这个map中还放入了一个key值时 fruits的list。这样就可以循环遍历 fruits。
感觉好像很简单,但事实上有太多功能可以采用这样的过程:
1、前台展现;不多说了。
2、对外接口;银行接口、打印接口等等。
2、实体对象生成;比如Schema这样的对象生成;(我自己写了一个类似Schema生成的过程,非常非常的简单,主要是因为Freemarker是可以直接读取xml,而pdm本身就是xml文件,这样就直接写节点就行了,非常非常方便)。
<#ftlns_prefixes={"a":"attribute","c":"collection","o":"object"}>
<#listxmlRoot["Model/o:RootObject/c:Children/o:Model/c:Tables/o:Table"]as t>
${t["a:Name"]}
    <#listt["c:Columns/o:Column"] as c>
    ${c["a:Name"]}${c["a:Code"]} ${c["a:DataType"]}
    </#list>
</#list>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值