`
jinyanliang
  • 浏览: 308002 次
  • 性别: Icon_minigender_1
  • 来自: 河南开封
社区版块
存档分类
最新评论

J2EE里面使用freemark技术

 
阅读更多
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开发的时候仍然给我们程序员带来了很多痛苦,每次修改都要多几秒钟,那在一天的开发中就有很多时间浪费在jsp的编译上了。用 webwork in action的作者的话来说:“每次修改之后重新运行都要等等几秒是令人失望的,而频繁地修改jsp更是会令你的失望情绪变本加厉“。我们把模板技术引入到view中去可以带来更好的开发效率,而且模板的速度要比jsp快(虽然编译过后的jsp在速度上已经满足我的需求了,呵呵)。当然模板技术可以用在很多领域,可不只在view那里。我们可以通过模板技术来生成xml,生成jsp,生成java文件等等,说到这里,大家通常会使用模板技术用在公司的框架里,这样就可以很快速的生成添删改查的代码,需要的只是模板,其他比如还有邮件模板等等。
以上是模板的作用,当然模板还有其他领域的应用,希望能和大家多讨论,提高我们的生产效率。下面先为大家介绍freemark开发简单hello实例

第一步:将需要的freemark.jar包导入lib目录

第二步:在根目录下新建一个templates目录,在里面建立一个hello.ftl文件,文件内容如下:
   1. <html>  
   2. <head>  
   3.   <title>freemark example</title>  
   4. </head>  
   5. <body>hello ${user}!</body>  
   6. </html>  

第三步:在根目录下新建一个index.html文件,代码如下:
   1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
   2. <html>  
   3. <head>  
   4. <meta http-equiv="Content-Type" content="text/html; charset=utf8">  
   5. <title>Insert title here</title>  
   6. </head>  
   7. <body>  
   8. <hr>  
   9. <a href="test">调用hello模板</a>   
  10. </body>  
  11. </html>  

第四步:新建立一个Hello类,代码如下:
   1. package org.eagle;  
   2.   
   3. import java.io.*;  
   4. import java.util.*;  
   5.   
   6. import javax.servlet.ServletException;  
   7. import javax.servlet.http.*;  
   8.   
   9. import freemarker.template.Configuration;  
  10. import freemarker.template.Template;  
  11. import freemarker.template.TemplateException;  
  12.   
  13. public class Hello extends HttpServlet {  
  14.     private Configuration cfg;  
  15.   
  16.     public void init() {  
  17.         // 初始化FreeMarker配置  
  18.         // 创建一个Configuration实例  
  19.         cfg = new Configuration();  
  20.         // 设置FreeMarker的模版文件位置  
  21.         cfg.setServletContextForTemplateLoading(getServletContext(),  
  22.                 "templates");  
  23.     }  
  24.   
  25.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  26.             throws ServletException, IOException {  
  27.         // 建立数据模型  
  28.         Map root = new HashMap();  
  29.         // 放入对应数据key value  
  30.         root.put("user", "zdz");  
  31.         // 取得模版文件  
  32.         Template t = cfg.getTemplate("hello.ftl");  
  33.         // 开始准备生成输出  
  34.         // 使用模版文件的charset作为本页面的charset  
  35.         // 使用text/html MIME-type  
  36.         response.setContentType("text/html; charset=" + t.getEncoding());  
  37.         PrintWriter out = response.getWriter();  
  38.   
  39.         // 合并数据模型和模版,并将结果输出到out中  
  40.         try {  
  41.             t.process(root, out);// 用模板来开发servlet可以只在代码里面加入动态的数据  
  42.         } catch (TemplateException e) {  
  43.             throw new ServletException("处理Template模版中出现错误", e);  
  44.         }  
  45.     }  
  46. }  

第五步:在web-xml里面配置一下该servlet
   1.  <servlet>  
   2.     <servlet-name>Hello</servlet-name>  
   3.     <servlet-class>org.eagle.Hello</servlet-class>  
   4. </servlet>  
   5. <servlet-mapping>  
   6.     <servlet-name>Hello</servlet-name>  
   7.     <url-pattern>/test</url-pattern>  
   8. </servlet-mapping>  

第六步:启动服务器,打开index.html页面即可
分享到:
评论
1 楼 wind35 2012-06-25  
lz你好,我想请问对于fm的机制,是每次访问都要进行模板的数据渲染?还是第一次会渲染,以后的访问都是纯的静态页面了?

相关推荐

    Freemark模板使用

    本教程适用于初学者,旨在快速引导你掌握Freemark的基本使用方法。我们将通过几个关键步骤来理解并实践如何在Java环境中配置和使用Freemark。 首先,你需要在项目中引入Freemark的库文件。在这个例子中,我们导入了...

    Java使用freemark生成word

    下面我们将详细探讨如何在Java中使用FreeMarker来生成Word文档。 1. **FreeMarker简介** FreeMarker是一个基于模板的开源Java库,用于生成文本输出。它的核心功能是解析模板文件并根据提供的数据模型动态生成输出...

    FreeMark Jar包 包括 中文 官方文档

    这个压缩包包含的是FreeMark的中文官方文档,对于理解和使用FreeMark非常有帮助。 "FreeMarker_2.3.23_Manual_zh_CN.chm" 是FreeMark的2.3.23版本的中文帮助文档,通常以CHM(Microsoft Compiled HTML Help)格式...

    freemark资料及eclipse的freemark插件

    标题中的"freemark资料及eclipse的freemark插件"表明我们将讨论关于FreeMarker的学习资源以及如何在Eclipse中使用FreeMarker插件进行开发。 FreeMarker的核心概念包括模板、数据模型和配置。模板是HTML或者其他文本...

    freemark模板&模版技术

    它允许开发者使用简单的模板语言(Template Language)来分离应用逻辑与展示层,使得前端设计和后端开发可以独立进行,提高了开发效率和代码的可维护性。在本文中,我们将深入探讨FreeMarker模板及模板技术的核心...

    Freemark标签

    主要介绍了freemark标签的相关基础知识,基本上了解Freemark标签的应用

    freemark使用手册中文版

    Freemarker 是一种基于模板技术的模板引擎,它提供了强大的模板语言和灵活的配置选项,使得开发者可以快速构建动态网页应用程序。本手册将详细介绍 Freemarker 的使用方法和语法规则,以帮助开发者快速掌握 ...

    freemark开发指南(入门)

    FREEMARK资料,开发入门指南 是开发人员了解FREEMARK的一本入门资料

    Freemark指南

    本指南旨在全面介绍Freemark的基本概念及其使用方法,帮助读者更好地理解和运用这一工具。 #### 二、核心概念 Freemark的核心概念主要包括三个:**序列(Sequence)**、**键值对集合(Hash)**以及**命名空间...

    freemark使用的简单demo

    在本“freemarker使用的简单demo”中,我们将深入探讨如何设置和运行一个基础的Freemarker应用。 1. **Freemarker基本概念** - **模板(Template)**: Freemarker的核心是模板,它是纯文本文件,其中包含静态内容...

    eclipse freemark插件

    “eclipse freemark插件”是为了在Eclipse中提供对FreeMarker模板语言的集成支持。安装此插件后,开发者可以在Eclipse中直接编写、调试和预览FreeMarker模板,极大地提高了工作效率。 该插件的安装方法相对简单:...

    freemark标签使用

    在使用`Include` 标签前,确保在相应的`solution`目录下已创建好所要包含的模板文件。 #### 2. Position标签:展示当前位置路径 **功能概述:** `Position` 标签用于在页面上显示当前位置路径,类似于面包屑导航,...

    实现FreeMark读取模板生成HTML

    在描述中提到的“实现FreeMark读取到json数据”,意味着你可能需要将JSON对象转换为FreeMarker的数据模型。这可以通过使用Jackson或Gson等库来实现。例如,如果你有一个JSON字符串: ```json { "name": "张三", ...

    freemark开发指南详解

    本篇将深入讲解Freemarker的开发指南,帮助你更好地理解和使用这一工具。 1. **Freemarker基础概念** - **模板语言**:Freemarker使用的是基于文本的模板语言,它不包含任何编程语法,而是通过简单的标记来控制...

    freemark 资料学习

    在你提供的资料中,"freemark中文资料"和"freemark教程"是学习的关键。它们可能包含了Freemarker的基本概念解释、实例演示、常见问题解答等。"freemark基础和高级教程"则更深入地讲解了Freemarker的各种特性,是进阶...

    FreeMark插件

    FreeMark是一款强大的文本标记语言,它允许用户使用简单的语法来创建...通过阅读"readme.txt"并正确安装"plugins"目录中的插件,开发者能够无缝地在IDE中使用FreeMark,从而提高工作效率,更好地管理和维护项目文档。

    freemark制定excel下载模板示例

    当下载的excel格式内容比较复杂时,用程序生成excel文件就显得力不从心。这时采用excel模板化,更加便捷高效。本资源基于springboot+freemark模板做的示例。只需要了解下freemark基本语法即可。

    freemark

    freemark资料

    freemark 生成静态页面

    为了进一步了解和使用这个项目,你需要解压文件,查看项目结构,并按照描述中的指示运行`CreateHtmlWebSite.java`,这将帮助你理解并实践FreeMarker生成静态页面的过程。 总的来说,FreeMarker是Java Web开发中一个...

    Struts2+Freemark

    在"Struts2+Freemark 做到一个例子"中,你可能会看到以下的实践步骤: 1. 创建Action类并实现相关业务逻辑。 2. 编写FreeMarker模板文件(通常以`.ftl`为扩展名),定义视图布局和数据展示方式。 3. 在Struts2配置...

Global site tag (gtag.js) - Google Analytics