`
cowgun888
  • 浏览: 6162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

freemarker

    博客分类:
  • web
阅读更多
FreeMarker是一款模板引擎:一种基于模板的、用来生成输出文本的通用工具。
Web项目中,有时用其作为视图层技术来生成响应的html,其实下载的freemarker压缩包中已经有很多例子介绍如何在项目中使用。如图,有jsp的、struts中使用的等等,很详细。


下面还是就简单介绍一下如何使用,方便以后回忆:
准备:添加freemarker.jard到项目fmk


一、直接使用Freemarker模板替代jsp、html页面
1.web.xml配置
Xml代码 
<!-- Freemarker模板servlect --> 
<servlet> 
  <servlet-name>freemarker</servlet-name> 
  <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class> 
  <init-param> 
    <param-name>TemplatePath</param-name> 
    <param-value>/</param-value> 
  </init-param> 
  <init-param> 
    <param-name>NoCache</param-name> 
    <param-value>true</param-value> 
  </init-param> 
  <init-param> 
    <param-name>ContentType</param-name> 
    <param-value>text/html</param-value> 
  </init-param> 
  <init-param> 
    <param-name>template_update_delay</param-name> 
    <param-value>0</param-value> 
  </init-param> 
  <init-param> 
    <param-name>default_encoding</param-name> 
    <param-value>UTF-8</param-value> 
  </init-param> 
  <init-param> 
    <param-name>locale</param-name> 
    <param-value>en_US</param-value> 
  </init-param> 
  <init-param> 
    <param-name>number_format</param-name> 
    <param-value>0.##</param-value> 
  </init-param> 
  <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
  <servlet-name>freemarker</servlet-name> 
  <url-pattern>*.ftl</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
  <welcome-file>index.ftl</welcome-file> 
</welcome-file-list> 
2.freemarker的欢迎页index.ftl
Html代码 
<html> 
    <head> 
        <title>Freemarker练手</title> 
    </head> 
    <body> 
        <#assign msg="你好,这是Freemarker发出的消息"> 
        <h1>Freemarker说:</h1> 
        ${msg} 
    </body> 
</html> 
3.注意:
项目编码需要和web.xml中配置的freemarker编码一致,不然会出现乱码
4.访问:
下面就可以通过URL【http://localhost:8080/fmk/】来访问了

二、使用Servlet作为控制器
这里加入servlet作为控制器,给Freemarker模板传入数据。
1.新建servlet:SimpleMsgServlet.java

Java代码 
package com.kyj.servlet; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Arrays; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import freemarker.template.Configuration; 
import freemarker.template.Template; 
import freemarker.template.TemplateException; 
 
public class SimpleMsgServlet extends HttpServlet { 
    private static Configuration cfg; 
 
    @Override 
    public void init() throws ServletException { 
        if (cfg == null) { 
            cfg = new Configuration(); 
            cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/template"); 
        } 
    } 
 
    @Override 
    protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { 
        //传给模板用来存储数据的model 
        Map<String, Object> model = new HashMap<String, Object>(); 
        //传给模板的list数据 
        List<String> authors = Arrays.asList(new String[]{"James","Killer","King"}); 
        //传给模板的map数据 
        Map<String, Object> viewLogs = new HashMap<String, Object>(); 
        viewLogs.put("ROOT", "2012-12-31 23:43:11"); 
        viewLogs.put("LOG_VIEWER", "2012-12-31 23:43:11"); 
        viewLogs.put("DATA_MANAGER", "2012-12-31 23:43:11"); 
         
        //添加到model中 
        model.put("viewLogs", viewLogs); 
        model.put("authors", authors); 
         
        //加载模板输出 
        Template t = cfg.getTemplate("SimpleMsg.ftl"); 
        res.setCharacterEncoding("UTF-8"); 
        t.setEncoding("UTF-8"); 
        PrintWriter out = res.getWriter(); 
        try { 
            t.process(model, out); 
        } catch (TemplateException e) { 
            e.printStackTrace(); 
        } 
    } 



Xml代码 
<servlet> 
    <servlet-name>simpleMsg</servlet-name> 
    <servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>simpleMsg</servlet-name> 
    <url-pattern>/simpleMsg</url-pattern> 
</servlet-mapping> 


2.WEB-INF/template下新建模板文件:SimpleMsg.ftl

Java代码 
<#ftl encoding="UTF-8"> 
<html> 
    <head> 
        <title>Freemarker简单Servlet消息</title> 
    </head> 
    <body> 
        <h1>下面是Servlet传过来的信息</h1> 
        <#-- list数据 --> 
        <h4>作者列表</h4> 
        <ul> 
            <#list authors as author> 
                <li>${author}</li> 
            </#list> 
        </ul> 
        <#-- map数据 --> 
        <h4>管理员最后登录时间列表</h4> 
        <table cellpadding="1" border='1' cellspacing="1"> 
            <tr> 
                <th width='120' align='center'>用户名</th> 
                <th width='200' align='center'>最后登录时间</th> 
            </tr> 
            <#list viewLogs?keys as record> 
                <tr> 
                    <td>${record}</td> 
                    <td align='center'>${viewLogs[record]}</td> 
                </tr> 
            </#list> 
        </table> 
    </body> 
</html> 


3.web.xml配置servlet

Java代码 
<servlet> 
    <servlet-name>simpleMsg</servlet-name> 
    <servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>simpleMsg</servlet-name> 
    <url-pattern>/simpleMsg</url-pattern> 
</servlet-mapping> 


4.访问servlet
http://localhost:8080/fmk/simpleMsg

三、与Struts框架整合
见freemarker提供的例子。

注明:转载自http://newspringwork.iteye.com/blog/1810163
分享到:
评论

相关推荐

    freemarker语法完整版

    Freemarker页面语法 A 概念 最常用的 3 个概念 sequence 序列,对应java 里的list 、数组等非键值对的集合 hash 键值对的集合 namespace 对一个ftl 文件的引用, 利用这个名字可以访问到该ftl 文件的资源 ...

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

    freemarker-2.3.30-API文档-中文版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    安装freemarker插件(freemarker的eclipse插件)

    安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...

    FreeMarker

    FreeMarker,FreeMarker

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    JAVA项目代码绘制PDF和通过freemarker动态生成PDF

    3. freemarker(FreemarkerUtils) 对于没有使用宏、函数等word、excel,需要按模板动态生成word、excel、html,只需要一个freemarker,先将word、excel、html等另存为**xml**,即可使用模板动态生成文件,目前xlsx是...

    freemarker模板技术生成复杂word文档---解决了编码问题

    大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出‘.doc’ word文档。经测试这样方式生成的word文档完全符合office标准,...

    freemarker-2.3.30-API文档-中英对照版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    FreeMarker_Programmer Guide

    FreeMarker

    Java项目中利用Freemarker模板引擎导出--生成Word文档

    基于Java语言来导出Word文档的方式也有很多种,如Jacob,Apache POI,Freemarker,PageOffice,java2word 等等。。。。 在这里将通过Freemarker这个模板引擎来实现导出 Word,项目不限于Swing,SSH,SSM,Spring ...

    eclipse的freemarker插件

    freemarker格式化的eclipse插件。用于freemarker的格式化。

    freemarker替换变量实例

    freemarker替换变量实例

    超强freemarker使用总结,有示例有讲解,可做快速查询手册!!

    在开发web项目的时候使用到的页面展现技术,它并...总体,该文档能够提供所有常用的freemarker操作,示例和简略的讲解可以让人一下子就能上手,效率极高。 适合做快速查阅册子,同时也非常适合初学者和骨灰开发者使用。

    freemarker-2.3.23-API文档-中文版.zip

    赠送jar包:freemarker-2.3.23.jar; 赠送原API文档:freemarker-2.3.23-javadoc.jar; 赠送源代码:freemarker-2.3.23-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.23.pom; 包含翻译后的API文档:...

    FreeMarker中文文档.pdf下载

    FreeMarker中文文档.pdf FreeMarker入门必修

    用Freemarker生成word文档

    2.将xml中需要动态修改内容的地方,换成freemarker的标识符 添加图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可 以看到如下的一片base64编码后的代码: ...

    hudson.freemarker_ide_0.9.14

    FreeMarker在Eclipse安装 1.将插件hudson.freemarker_ide_0.9.14文件夹放到eclipse下的plugins文件夹下 按理,这样的话,重启eclipse就应该解决了 但是不成 因为hudson.freemarker_ide_0.9.14文 件夹下的...

Global site tag (gtag.js) - Google Analytics