`
gogole_09
  • 浏览: 205599 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Ant+Freemarker+xml 生成Html

阅读更多



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

 

    

效果图:

 

 

  • 大小: 3.3 KB
  • 大小: 9.8 KB
  • 大小: 6.7 KB
  • 大小: 11.2 KB
  • 大小: 56.7 KB
  • 大小: 32.4 KB
分享到:
评论
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>
1 楼 erlengleng 2010-01-11  
我们客户也有类似需要,静态化产品页面,小可不才,没想出好的解决办法,这下可以参考一下楼主的解决方案。受教了。

相关推荐

    ant + freemarker + excel解析

    3. 在Ant任务中,使用FreeMarker API将数据模型与模板结合,生成最终的HTML或者新的Excel文件。FreeMarker会自动处理模板中的逻辑和变量,根据数据填充相应内容。 4. 最后,Ant可以负责将生成的文件输出到指定位置...

    Fmpp+Ant生成类文件

    Fmpp(FreeMarker Macro Processor)是一款强大的文本模板语言,它主要用于生成任何类型的文本文件,如Java源代码、XML配置等。FreeMarker是基于模板的,允许开发者用简单的语法来动态生成复杂代码。它通常用于构建...

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    **FreeMarker**是一款功能强大的模板引擎,主要用于生成文本输出,如HTML页面、电子邮件、配置文件等。它被广泛应用于Web开发领域,能够帮助开发者轻松地将数据模型与表现层分离,从而提高代码的可维护性和可扩展性...

    FreeMarker 手册

    FreeMarker是一个用于生成文本输出的模板引擎,它采用Java语言编写,并且遵循MVC(模型-视图-控制器)的设计模式,主要用于Web开发中将业务数据渲染到HTML页面上。FreeMarker基于预设的模板(通常是HTML文件),可以与...

    FreeMarker_Manual_zh_CN.pdf

    FreeMarker是一个开源的模板引擎,它基于Java语言,专门用于生成文本输出,例如HTML网页、电子邮件、配置文件等。FreeMarker允许将数据模型和模板分离,通过模板可以直接生成静态的页面,也可以在服务器端生成动态的...

    FreeMarker_Manual_zh_CN

    - **和Ant一起使用FreeMarker**:与构建工具Ant集成的方法。 - **Jython包装器**:在Jython环境中使用FreeMarker的方法。 #### 四、XML处理指南 - **揭示XML文档**:XML文档的解析和处理方法。 - **将XML放到数据...

    freemarker使用文档

    4.9 和Ant一起使用FreeMarker:将FreeMarker整合到构建工具Ant中。 4.10 Jython包装器:Jython是一种可以运行在Java平台上的Python实现,FreeMarker提供了对Jython的支持。 三部分、XML处理指南 这一部分讲述了如何...

    FreeMarker 中文教程 用于 FreeMarker 2.3.19

    - **定义与功能**:FreeMarker 是一款强大的、灵活的、可扩展的模板引擎,它支持多种编程语言,主要用于生成动态HTML页面以及其他格式的文档,如XML、PDF等。FreeMarker 通过分离业务逻辑和表示层来提高开发效率,...

    FreeMarker_zh_CN.pdf

    在文档的最后,还提供了一些附加信息,包括与FreeMarker相关的其它技术的集成指南,例如Ant构建工具、Jython脚本语言和遗留的XML包装实现。对于需要将FreeMarker与这些技术结合使用的开发者来说,这些指南是不可或缺...

    FreeMarker中文帮助文档

    FreeMarker不仅可以用于Web应用的表现层,而且在生成XML、JSP或纯Java代码方面也有着广泛的应用。 FreeMarker的模板由文本和内嵌指令组成,它遵循“模板+数据模型=输出”的原则。数据模型通常是由后端程序准备的...

    FreeMarker中文手册

    FreeMarker是一款开源的模板引擎工具,它允许用户以模板的方式生成各种文本格式输出,例如生成HTML网页、源代码等。模板引擎是一种用于分离业务逻辑和展示格式的技术,这使得设计人员可以专注于设计,而程序员专注于...

    FreeMarker手册

    FreeMarker是一种模板引擎,它是用Java编写的,用于生成文本输出(包括HTML网页、电子邮件等)。模板引擎通常用于MVC(模型-视图-控制器)架构中,特别是在Web应用开发中,能够将业务数据和视图模板分离,提高开发...

    FreeMarker中文版手册2.3.19

    手册中还包括了关于字符集问题、多线程环境下的使用、日志记录、在Servlet环境中使用FreeMarker、为FreeMarker配置安全策略、遗留的XML包装实现和如何与Ant工具结合使用的章节,以及Jython包装器的相关信息。...

    FreeMarker 2.3.19 中文手册

    它可以用于生成任何类型的文本输出,包括但不限于HTML、XML、纯文本等。FreeMarker是一个Java类库,主要面向开发者而非最终用户,这意味着它通常会被嵌入到其他应用程序中作为一部分功能使用。 **版权说明:** ...

Global site tag (gtag.js) - Google Analytics