Freemarker+Sitemesh使用文档
一:简要介绍:
Freemarker是模板引擎,也可以说是一种表现层的框架,Struts2框架技术对Freemarker 做了很好的支持。
Site Mesh是open symphony团队开发的j2ee应用框架之一,是一个用来实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离,旨在提高页面的可维护性和复用性。
二:配置工程环境
步骤1. 新建Web工程freemarkerWeb
步骤2. 下载struts-2.0.11.2-all.zip解压缩并导入开发所需相关jar包到lib
目录下。Jar包:
步骤3. 相关的配置文件
Web.xml
注意:要想在Freemarker中使用Struts2标签必须配置以上加粗部分代码到
web.xml文件中。
编写Struts.xml
type="freemarker">/WEB-INF/freemarker/register.ftl type="freemarker">/WEB-INF/freemarker/success.ftl
注意:
A:斜体字部分的代码是根据不同的应用而配置的,斜体部分的代码为freemarkerWeb应用的代码。
B:
板文件必须由Freemarker模板引擎来解析,而Struts2内部实现了Freemarker
模板引擎,但我们必须声明返回结果类型为freemarker才可以
步骤4. 建立WEB-INF/decorators.xml描述各装饰器页面。
各标签常见属性的含义为:
?defaultdir: 包含装饰器页面的目录
?page : 页面文件名
?name : 别名
?role : 角色,用于安全
?webapp : 可以另外指定此文件存放目录
?Patterns : 匹配的路径,可以用*,那些被访问的页面需要被装饰。
步骤5.使用freemarker实现的某页面,这个片段可以导入到main.ftl 装饰器中,通过sitemesh装饰到你指定的页面上。
步骤6.建立装饰器页面main.ftl
<#include "/WEB-INF/freemarker/commons/header.ftl">
<#-- 使用FreeMarker的include指令插入页眉 -->
${body}
<#include "/WEB-INF/freemarker/commons/footer.ftl">
<#-- 使用FreeMarker的include指令插入页脚 -->
main.ftl 为装饰器页面,可以将它用于装饰你指定的页面。
最后,需要注意的是,Freemarker模板文件的处理,通过Web容器是无法直接处
理的,因此不要让用户直接访问模板文件。在开发过程中,我们可以将Freemarker
文件直接放到Web工程的 WEB-INF目录或其子目录下,并在相应的struts-*.xml
文件中配置type="freemarker"来输出模板。