《FreeMarker功能详解.docx》由会员分享,可在线阅读,更多相关《FreeMarker功能详解.docx(7页珍藏版)》请在第壹文秘上搜索。
1、FreeMarker模版语言讲解1. FreeMarker的简洁介绍。FreeMarker是一个模板引擎,一个基于模板牛.成文本输出的通用工具,运用纯JaVa编写。FreeMarker我们的第印象是用来替代JSP的,但是与JSP不同的是FreeMarkCr模板可以在SQrvIeI容器之外运用。可以运用它们来生成电子邮件、配置文件、XM1.映射等。或者干脆生成HTMJ虽然FreeMarker具有一些编程的实力,但通常由Java程序打尊要显示的数据,由FreeMHrker生成页面,通过模板显示打克的数据(如下图)2. FreeMarker入门。支持的数据类型,字符串、数字、布尔、日期JSON,集合
2、(数组)2.1. View(FreeMarker)道染的全过程请求流程简化图2.2. 第一个筒洁的FreeMarker卷试。JaVa代码:publicclasaF-urZorggpublicstaticvoid11ainthrowsExceptionI/KJltFreeffwrker艇置“象CccifigurationCfg-11*Confjrtion(I;,/设置一极书目c3.SQ-QvtoryForfanrfdatc1.oadirxigFile(wHQbRcotXWEB-IKF/ftlw)偷出.以CKey.VFlc)方式W出MapoutMap-newHashM3pO;outMAp.putA
3、WzViu);ZUttftr*11trrr文tlTcnplotctcr/&求生成tn数据/我合并*的数柜打卬到限制台*W.0Ut7teoplte.proc*IwtMsp,outI;out.flushI);FreeMarker代码22.第个简沽的FreeMarker尝试.Hello:$(name)2.3. 其次个倚洁的FreeMarker尝试,SerVIetWeb方式呈现.创眼个吆四匹publicclassCcwForFrccMarXcrScrv1.QtextendsHttpS4rvlctprivateStAtlcfinallongtIiiVQraioUID-I1.;publicvoidserv
4、iceIHttp5ervletBejeBtrequest/HttpSrvletFcpo11Bresjwn&elthrowsScrvlQtExccption/IOExccption/ttWttlHIStringppPath-request.vetSeveionl9et$rvletContxt1.gtRalPath7,;,构建卜CrbGrK殳r配?!对软ConfigurationctgnowConfiguration()j,设置发或楸苔目cfg.ctDirectoryor11pl;cfg.SetDefaultEncodingIhUF-Sm;公出.以VKey匕18方式“出MApOutMapnew心2
5、卜2(九“叼0。5);OVtMspgtCnMd*Vn);Mla卷板NflT411pltct11plot-cCg.gotTcfflatQCdomol.CtlrU7F-8)RI9出贝匐template.processoutfprrespco&e,getWriterII);Icatch(TcaplatcExcQptlon)。.pxincStkxACAO;FrccMarker代码titlw)2311次个的油的PrZNdrker.身试.$rvltMeb方式Y.魏titleVbodyA(p23J(次个W5沾的PrZMarkGr会H,ServletWrb方KM现f!A?!$.-11r13. FreeMark
6、er语法介绍。Freemarker基本语法是E1.表达式,写法和在JSP里写法一样$),自分的语法是以.Wtftag方式,也可以仲ag方式.以“?”作为自身方法调用,以“作为属性调用,下面我们来全面的介绍下.3.1. FreeMarker每个View层都是有自己的注样方式,这个地方提到的注样不同于HTM1.的注择方式。HTMI注糅方式在页面查看源码是看的到的。而FreeMarker,JSP等模版语言的注释都是查看页面源码看不见的。其实建议我们在写代码的时候采纳各种模版自身的注释方式来写注释,这样可以达到业务平安的效果“!-HTM1.注释#一FreeMarker注择3.2. 自带空字符串(对象)
7、处理.从JSP等其他VieW层运用过的童鞋们,在运用FreeMarker的时候,都会遇到个问题,当个值或者对象为null的时供.*如这个时候去运用就会抛出异样。这个问题上仁者见仁智者见智,谈不上好与不好.FreeMarker自带空的处理方式。-欢认他v:$v?dcfaultI,ii*tfcnullI(ft-vl;$(vlKbrv2:S(v2Hbr3.3.I.else语法FreeMarker,假如去比较2个值是否相等.那么它必需值相等,并且类型也一样,支持比较的类型有number(Integerintlong、1.ong,double)等数据类型String.Date.FreeMarkercon
8、dition表达式比较的是类型和tfl类型不一样就会报错.而JSP中则不用.这是个区分。这个值是:l这个位是:2这个值是:不知道这个值是:33.4.1.ist语法FreeMarker中循环(迭代)的写法和JSP用法一样。格式为v#IiStliStaSiX*list,这个i表示从这个集合中,第一个元素到最终一个元索的迭代表示.我们的域名有$dcmain三7sizeyb:?(itKbr篮球,足球乒乓球,双色球/tassign)itindexI:$itKbr3.5.1nclude语法页面弓I入1includein3.6. Assign语法VtaSSign匹篮理,足球,乒乓球,双色球gnClistst
9、r?split(.asit$it_index):$(itl5(1.t_index变及定义好后,没有局城、全局之分,当前页面都可以运用.一蚁终输出的一个值:$(indexI3.7. 类型转换,内置函数运用一定义交Ubl2*/tml-,V5三-1.56tossignvJ三truc,v4三*value1vol(a*;*bwlafln-5(vl7nuerv/1v2不是nu11ber4iS*;isi)oolcanl7strlngv3JiBlcan,v34*ttBoolean,W,)(P内Jt函tt用.Phtnl:以htl方大输出.Shtrl?htnlIcdp,irbUAt字母人。Slv47cp-firt
10、Iloer-caw:dvJ:91”?Iowvj)VbCUPXjea:大耳:$Iv4?upp-r_caee)trls:去撞前出空格5v4Ttrlft)iz兆合的K段:$iv4?eplitl,),)V5iz*lintt运河QUrTber矣系侑瞥敛3s0ntHJSON:$?split、Pdefault一元前级运算符expr、-epr、!expr乘除、取模*、/、%加减法+、关系运算符、=:、(ltgtltete)等于、不等于、!龙物与&遗物或Il数字范用3.9. Macro运用vp第一个科数:$Iindex;其次个参数:Stype13.10. Map循环.MKP,JS0XjeonWWi9sign:bwtal;bl) 5i1son7c.allit)3iap浙环- 4.现有框架里FreeMarker的运用