freemarker常用标签,freemarker生成静态页面
什么是FreeMarker?
FreeMarker是一个模板引擎,是一个用于生成/输出文本的基于开源模板的通用工具。
它不是面向最终用户的,也不是web APP应用程序框架。 它是Java类库,是web APP应用程序框架中的实用组件,是可以集成到开发产品中的APP应用程序。
FreeMarker专门设计为使用实现MVC方案的servlet APP应用程序生成HTML页面。
通过使用MVC模式的动态网页创意,可以将前端设计从程序中分离出来,实现符合java各部门职责的编程思想,代码简洁,维护方便。
FreeMarker也有编程能力,但不是像PHP那样的综合编程语言。
通常,使用FreeMarker模板生成文本以表示已经提供的数据。 只需生成文本,也适用于开发web APP应用程序以外的环境。
值得注意的是,使用FreeMarker作为视图层组件是为了为模型2框架(如Struts )提供现成的解决方案,页面响应速度已经在一定程度上提高了。
2.FreeMaker角色:页面静态化
a ) JavaEEWeb开发存在问题:用动态web技术创建的网页相率较低,需要将这些动态网页转换为静态网页,节约程序运行时间
b )静态化一个系统中的所有网页吗? 哪些页面需要静态化?
[1]否,因为在一个页面静态化后,所有写入操作都会引起巨大的资源调动,浪费更多的资源
所以我们只对修正概率低或者不修正的页面进行静态化。
[2]例:电子书、商品详细信息.
c ) CMS系统(内容管理器系统)是静态化动态页面
d )页面静态化原理:
3.FreeMaker的第一个程序:
在pom文件中引入freemaker插件。 地址为:http://mvn repository.com/artifact/org.freemarker/freemarker
a )编码
ftl (模板由html标记和freemaker表达式组成)。
htmlbodyh1${name}/h1/body/html守护程序:
//1获取freemaker配置信息配置CFG=新配置('配置文件路径'); //freemarker.template.configuration; //2角色这是ftl文件夹的位置CFG.setdirectoryfortemplateloading (new file )“文件夹路径”); 为//3ftl文件设置字符集代码CFG.set default编码(utf-8 )。 //4获取相应的使用模板templatetemmplate=CFG.get template ('文件名. ftl ' ); //5配置模板所需的动态数据调用服务----daomaproot=new hashmap (root.put (' name )、' yongqi_wang ); //6io流输出外流writer out=new filewriter (new file ) "生成静态页面后的存储路径/文件名. html " "; template.process(root,out ); out.flush (; out.close (; 4.FreeMaker模板标记
a )展示个别数据
(1)偏差变量: Map格式
${key}
)2)对象形式: key .属性名称
${user.id}
${user.name} b )有条件展示数据key=='值'/key .属性=='值'
#if name=='yongqi_wang'h1正确的h1#elseh1错误/h1/#ifc (显示多个数据
/** List集合user的创建过程包括两个属性ListUser users=ArrayListUser ():id和name; users.add (用户; Map root=new HashMap (; root.put('us ',users ); */# listusasitem $ { item.id } $ { item.name } # list/* * map集合Map m=new HashMap (; m.put('name )、' yongqi_wang ); Map root=new HashMap (; root.put('MP ',m ); */#list mp? 确定keysaskey//map中是否存在key的key${mp[key]}/#listd日期类型的处理
/**Map root=new HashMap (); root.put('Cdate ',new Date ) ); */${cdate? date}//年月日${cdate? datetime}//年月日时分秒${cdate? time}//时分秒${cdate? 字符串(yyyy/mm/DD ) ) /指定日期格式e ) null值的转换
/**Map root=new HashMap (); root.put('name ',null ); */${name! '如果不对默认值' }//null值添加默认值,则会发生错误,空字符串//null值会发生错误。 expressionnameisundeflnadonline ...空值的判断#if name? 非空#else为空/#iff ) #include '其他页面路径'//包含其他页面
如果知道其他的标量和容器等的话,就知道不是什么特别的东西,是稍微不同的称呼
标量可以理解为java的变量类型。 可以是字符串、数字类型(不区分整数和浮点数)、布尔值或日期类型
容器:
哈希表:类似于java的HashMap以key-value的形式存储几个元素是无序的
序列:类似于java中的ArrayList。 使用类似数组的实现方法在脚本中存储,但存储的元素类型可以不匹配
集:在模板设计者看来,集是一个有限制的序列。 虽然无法获取集的大小或从索引中检索集内的子变量,但可以使用list命令进行遍历。
基本语法已经介绍到这里了,如果您真的想了解有关FreeMarker的信息和深层原理,可以从以下网站获取资源,也可以直接通过FreeMarker官方自行查看:
如果觉得写比较好的话,就称赞一下哦~!
链接: https://pan.Baidu.com/s/1 wxubddda2qoukgqpzhjtnq密码: msva以下是链接文档的浏览目录内容