最近客户项目中有用到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>
效果图:

本文介绍了一个使用Freemarker将XML数据转换为HTML的示例。通过解析web.xml配置文件,生成了包含系统名称、Servlet信息等内容的HTML页面。
492

被折叠的 条评论
为什么被折叠?



