- 浏览: 205599 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
harim:
思路十分不错,最近两家公司面试都问到了这个问题,我没有答出来, ...
缓存策略之LRU实现(基于双链表实现) -
javatozhang:
楼主真是良苦用心,很可惜我现在才对Tomcat感兴趣并有时间来 ...
tomcat init中加载哪些类? -
javatozhang:
diecui1202 写道可以看看goldendoc.org小 ...
tomcat init思维图 -
cherishLC:
非常感谢~表示自己没用过jquery,如果 jquery地址改 ...
最简单的jQuery折叠菜单 -
zhypengjw2012:
非常感谢!我今天就用到了!
jQuery插件--滑动条
最近客户项目中有用到freemarker生成原始的项目模版,所以就对freemarker进行一下研究。
这里写下我的第一个Demo,同大家一起探讨
Demo环境需要机器上安装ant(具体安装步骤,请google),
freemarker.jar包, 数据源(xml), 编写freemarker模版文件(ftl)
首先我们来看一下DEMO的目录结构:
lib中存放freemarker的jar包:
xml中存放数据源文件(Test.xml),具体代码下面有写:
我们先来看数据源文件, 选一个熟悉的文件 Test.xml (web工程里面的web.xml文件)
<?xml version="1.0" encoding="UTF-8"?> <webapp> <displayname>appfuse</displayname> <servlet> <servletname>action</servletname> <servletclass>org.springframework.web.servlet.DispatcherServlet</servletclass> <loadonstartup>2</loadonstartup> </servlet> <servletmapping> <servletname>action</servletname> <urlpattern>*.html</urlpattern> </servletmapping> <servlet> <servletname>action2</servletname> <servletclass>org.springframework.web.servlet.DispatcherServlet</servletclass> <loadonstartup>2</loadonstartup> </servlet> <servletmapping> <servletname>action</servletname> <urlpattern>*.html</urlpattern> </servletmapping> <sessionconfig> <sessiontimeout>10</sessiontimeout> </sessionconfig> <welcomefilelist> <welcomefile>index.jsp</welcomefile> </welcomefilelist> <errorpage> <errorcode>500</errorcode> <location>/error.jsp</location> </errorpage> <errorpage> <errorcode>400</errorcode> <location>/index.jsp</location> </errorpage> <errorpage> <errorcode>403</errorcode> <location>/403.jsp</location> </errorpage> <errorpage> <errorcode>404</errorcode> <location>/404.jsp</location> </errorpage> </webapp>
再来看看模版文件:webxml2html.ftl
<#escape x as x?html> <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!--获取xml节点值--> <title>${.node.webapp.displayname}</title> <meta name="keywords" content="This is generater by FreeMarker" /> </head> <body bgcolor="#ffffff"> <h2> J2EE 系统名字 <a name="top" href="#"> ${.node.webapp.displayname} </a> </h2> <h2> <!--提供循环操作--> 系统中的Servlet有: <#list .node.webapp.servlet as servlet> <hr /> <h3> name:<a name="${servlet.servletname}">${servlet.servletname}</a> </h3> <h3> class:<a name="${servlet.servletclass}">${servlet.servletclass}</a> </h3> 加载顺序: <#noescape>${servlet.loadonstartup}</#noescape> <p><a href="#top">Back to top</a></p> </#list> <hr> <h3> 系统的Session超时时间: ${.node.webapp.sessionconfig.sessiontimeout} </h3> <hr> <h3> 欢迎页面: ${.node.webapp.welcomefilelist.welcomefile} </h3> <#list .node.webapp.errorpage as erros> <hr /> <h3> 错误代码:<a name="${erros.errorcode}">${erros.errorcode}</a> </h3> <h3> 跳转路径:<a name="${erros.location}">${erros.location}</a> </h3> <p><a href="#top">Back to top</a></p> </#list> </h2> </body> </#escape>
ant 的任务文件:build.xml
<?xml version="1.0"?> <project name="GenerateHtml" default="generate-test" basedir="."> <taskdef name="freemarker" classname="freemarker.ext.ant.FreemarkerXmlTask"> <classpath> <fileset dir="lib"> <include name="*.jar" /> </fileset> </classpath> </taskdef> <target name="generate-test"> <!-- 建立html目录 --> <mkdir dir="html-test" /> <!-- 源目的: xml目录 目标:html目录 webxml2html.ftl来生成文件,数据源是Test.xml文件--> <freemarker basedir="xml" destdir="html-test" includes="**/Test.xml" template="webxml2html.ftl" /> </target> </project>
完成以后,利用CMD定位到build.xml路径.执行命令 ant generate-test 就可以生成文件, (在html-test文件夹下)
生成后的文件如下:
<?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>appfuse</title> <meta name="keywords" content="This is generater by FreeMarker" /> </head> <body bgcolor="#ffffff"> <h2> J2EE 系统名字 <a name="top" href="#"> appfuse </a> </h2> <h2> <!--提供循环操作--> 系统中的Servlet有: <hr /> <h3> name:<a name="action">action</a> </h3> <h3> class:<a name="org.springframework.web.servlet.DispatcherServlet">org.springframework.web.servlet.DispatcherServlet</a> </h3> 加载顺序: 2 <p><a href="#top">Back to top</a></p> <hr /> <h3> name:<a name="action2">action2</a> </h3> <h3> class:<a name="org.springframework.web.servlet.DispatcherServlet">org.springframework.web.servlet.DispatcherServlet</a> </h3> 加载顺序: 2 <p><a href="#top">Back to top</a></p> <hr> <h3> 系统的Session超时时间: 10 </h3> <hr> <h3> 欢迎页面: index.jsp </h3> <hr /> <h3> 错误代码:<a name="500">500</a> </h3> <h3> 跳转路径:<a name="/error.jsp">/error.jsp</a> </h3> <p><a href="#top">Back to top</a></p> <hr /> <h3> 错误代码:<a name="400">400</a> </h3> <h3> 跳转路径:<a name="/index.jsp">/index.jsp</a> </h3> <p><a href="#top">Back to top</a></p> <hr /> <h3> 错误代码:<a name="403">403</a> </h3> <h3> 跳转路径:<a name="/403.jsp">/403.jsp</a> </h3> <p><a href="#top">Back to top</a></p> <hr /> <h3> 错误代码:<a name="404">404</a> </h3> <h3> 跳转路径:<a name="/404.jsp">/404.jsp</a> </h3> <p><a href="#top">Back to top</a></p> </h2> </body>
效果图:
评论
2 楼
JasonRight
2010-07-28
<p>FMPP可以使生成的文件名不同于模板文件。<br><a href="http://jasonright.iteye.com/admin/blogs/723195"></a></p>
<p> </p>
<p><a href="http://jasonright.iteye.com/blog/723195">http://jasonright.iteye.com/blog/723195</a></p>
<p> </p>
<p> </p>
<p><a href="http://jasonright.iteye.com/blog/723195">http://jasonright.iteye.com/blog/723195</a></p>
<p> </p>
1 楼
erlengleng
2010-01-11
我们客户也有类似需要,静态化产品页面,小可不才,没想出好的解决办法,这下可以参考一下楼主的解决方案。受教了。
发表评论
-
博客停止更新
2012-04-24 11:37 1179该博客停止更新,请移步:ivanzhangwb.com -
JProfile初步使用图解
2011-11-02 13:28 5935最近参与平台的短信平台项目,在项目的后期,参与了一些性能 ... -
J2EE简单性的红利
2011-01-02 00:26 1416复杂性的代价: 系统架构上的复杂性,如果并非出于必要 ... -
读《Unix编程艺术》 第四章:模块化、保持清晰、保持简洁
2010-12-26 18:17 1623第四章: 模块化、保持 ... -
阿里巴巴电面整理(二)
2010-07-02 04:03 3987还是接着昨天的帖子来吧, 题目都在上一篇《阿里巴巴电面整理 ... -
阿里巴巴电面整理
2010-07-01 01:47 4943今天中午接到阿里巴巴的电话面试,电面了将近一 ... -
我的Google 在线文档地址
2010-06-26 02:18 1224本人整理的一些文档, 关于技术,工作,生活的。 会陆续发 ... -
读 IBM中国 《Java 理论和实践: 了解泛型》
2010-06-26 02:09 1313了解Java泛型 参考于IBM Develop ... -
世界杯期间离职……
2010-06-17 01:13 1386来深圳时间不长,但是很错误的进入一个外包公司待到现在, ... -
MD5验证文件
2010-01-22 01:31 1120参考多篇网上的资料。 记录一下 java用MD5验证文件的 ... -
超棒的验证码生成组件---Jcaptcha
2010-01-10 23:46 8508最近由于Springside3的发布,也来凑热闹学习学习 ... -
web服务器工作方式
2010-01-09 14:16 1799记录一下 web服务器 ... -
开源UML项目Udoc简介
2010-01-04 19:47 3048由于对开源的热爱,经常需要看开源的东东,但是像Strut ... -
非常不错的Struts2教程
2010-01-02 21:25 1210非常不错的Struts2教程,原创是downpour ... -
VC++之 Windows进程篇
2009-12-23 01:01 2296保护模式: 基于 X86 微处理器 ... -
eclipse 配置C/C++开发环境
2009-12-22 00:21 7436关于正常配置,请参考:http://jimychen ... -
RBAC权限涉猎之关系处理
2009-12-19 01:45 1583最近需要关注到RBAC这部分的理论知识。 ... -
重装XP以后修复Ubuntu引导
2009-12-03 23:37 2400在重装XP系统之后,引导区被windows强制的重写了一遍,导 ... -
Ant创建项目模版Demo
2009-11-14 21:01 3248由于项目中有用到公司自己封装的SDK,那么如果有新的开发 ... -
HSQLDB的简单使用
2009-10-22 14:31 1607本文只简单讲述hsqldb的使用方法, 具体Hsql是什 ...
相关推荐
3. 在Ant任务中,使用FreeMarker API将数据模型与模板结合,生成最终的HTML或者新的Excel文件。FreeMarker会自动处理模板中的逻辑和变量,根据数据填充相应内容。 4. 最后,Ant可以负责将生成的文件输出到指定位置...
Fmpp(FreeMarker Macro Processor)是一款强大的文本模板语言,它主要用于生成任何类型的文本文件,如Java源代码、XML配置等。FreeMarker是基于模板的,允许开发者用简单的语法来动态生成复杂代码。它通常用于构建...
**FreeMarker**是一款功能强大的模板引擎,主要用于生成文本输出,如HTML页面、电子邮件、配置文件等。它被广泛应用于Web开发领域,能够帮助开发者轻松地将数据模型与表现层分离,从而提高代码的可维护性和可扩展性...
FreeMarker是一个用于生成文本输出的模板引擎,它采用Java语言编写,并且遵循MVC(模型-视图-控制器)的设计模式,主要用于Web开发中将业务数据渲染到HTML页面上。FreeMarker基于预设的模板(通常是HTML文件),可以与...
FreeMarker是一个开源的模板引擎,它基于Java语言,专门用于生成文本输出,例如HTML网页、电子邮件、配置文件等。FreeMarker允许将数据模型和模板分离,通过模板可以直接生成静态的页面,也可以在服务器端生成动态的...
- **和Ant一起使用FreeMarker**:与构建工具Ant集成的方法。 - **Jython包装器**:在Jython环境中使用FreeMarker的方法。 #### 四、XML处理指南 - **揭示XML文档**:XML文档的解析和处理方法。 - **将XML放到数据...
4.9 和Ant一起使用FreeMarker:将FreeMarker整合到构建工具Ant中。 4.10 Jython包装器:Jython是一种可以运行在Java平台上的Python实现,FreeMarker提供了对Jython的支持。 三部分、XML处理指南 这一部分讲述了如何...
- **定义与功能**:FreeMarker 是一款强大的、灵活的、可扩展的模板引擎,它支持多种编程语言,主要用于生成动态HTML页面以及其他格式的文档,如XML、PDF等。FreeMarker 通过分离业务逻辑和表示层来提高开发效率,...
在文档的最后,还提供了一些附加信息,包括与FreeMarker相关的其它技术的集成指南,例如Ant构建工具、Jython脚本语言和遗留的XML包装实现。对于需要将FreeMarker与这些技术结合使用的开发者来说,这些指南是不可或缺...
FreeMarker不仅可以用于Web应用的表现层,而且在生成XML、JSP或纯Java代码方面也有着广泛的应用。 FreeMarker的模板由文本和内嵌指令组成,它遵循“模板+数据模型=输出”的原则。数据模型通常是由后端程序准备的...
FreeMarker是一款开源的模板引擎工具,它允许用户以模板的方式生成各种文本格式输出,例如生成HTML网页、源代码等。模板引擎是一种用于分离业务逻辑和展示格式的技术,这使得设计人员可以专注于设计,而程序员专注于...
FreeMarker是一种模板引擎,它是用Java编写的,用于生成文本输出(包括HTML网页、电子邮件等)。模板引擎通常用于MVC(模型-视图-控制器)架构中,特别是在Web应用开发中,能够将业务数据和视图模板分离,提高开发...
手册中还包括了关于字符集问题、多线程环境下的使用、日志记录、在Servlet环境中使用FreeMarker、为FreeMarker配置安全策略、遗留的XML包装实现和如何与Ant工具结合使用的章节,以及Jython包装器的相关信息。...
它可以用于生成任何类型的文本输出,包括但不限于HTML、XML、纯文本等。FreeMarker是一个Java类库,主要面向开发者而非最终用户,这意味着它通常会被嵌入到其他应用程序中作为一部分功能使用。 **版权说明:** ...