`

基于servlet的 Freemarker Demo

阅读更多

FreeMarker简介

FreeMarker模板文件主要由如下4个部分组成:

1,文本:直接输出的部分 //无论是json格式和html格式都变得非常的方便。

2,注释:<#-- ... -->格式部分,不会输出

3,插值:${...}#{...}格式的部分,将使用数据模型中的部分替代输出

4,FTL指令:FreeMarker指定,HTML标记类似,名字前加#予以区分,不会输出

java程序中使用FreeMarker

FreeMarker的模板就是一个.ftl文本文件,在该文件中使用了一些FreeMarker的特别标记,这些标记会动态显示,或者控制程序输出,如下面的模板文件代码:

${name},你好!${msg}

这里类似于${}的就是动态的内容,称作"插值".

为了使用FreeMarker来将数据模型中的值合并到模板文件中,可按如下步骤进行:

1,创建Configuration实例,该实例负责管理FreeMarker的模板加载路径,负责生成模板实例

2,使用Configuration实例来生成Template实例,同进需要指定使用的模板文件

3,填充数据模型,数据模型就是一个Map对象

4,调用Template实例的process方法完成合并.

pom.xml 添加freemarker的依赖包:

Code:
  1. <dependency>
  2. <groupId>org.freemarker</groupId>
  3. <artifactId>freemarker</artifactId>
  4. <version>2.3.16</version>
  5. </dependency>

servlet程序:

Code:
  1. importjava.util.*;
  2. importjava.io.*;
  3. importjavax.servlet.*;
  4. importjavax.servlet.http.*;
  5. importfreemarker.template.*;
  6. publicclassHelloServletextendsHttpServlet{
  7. privatestaticfinallongserialVersionUID=1L;
  8. privateConfigurationcfg;
  9. publicvoidinit(){
  10. //初始化FreeMarker配置
  11. //创建一个Configuration实例 第一步
  12. cfg=newConfiguration();
  13. //设置FreeMarker的模版文件位置
  14. cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/templates");
  15. }
  16. publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
  17. throwsServletException,IOException{
  18. //建立数据模型
  19. Maproot=newHashMap();
  20. root.put("message","HelloFreeMarker!");
  21. //取得模版文件 第三步
  22. Templatet=cfg.getTemplate("test.ftl");
  23. //开始准备生成输出
  24. //-使用模版文件的charset作为本页面的charset
  25. //-使用text/htmlMIME-type
  26. response.setContentType("text/html;charset="+t.getEncoding());
  27. Writerout=response.getWriter();
  28. //合并数据模型和模版,并将结果输出到out中
  29. try{
  30. t.process(root,out); //第四步
  31. }
  32. catch(TemplateExceptione){
  33. thrownewServletException("处理Template模版中出现错误",e);
  34. }
  35. }
  36. }

web.xml 配置:

Code:
  1. <servlet>
  2. <servlet-name>ServletFM</servlet-name>
  3. <servlet-class>HelloServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>ServletFM</servlet-name>
  7. <url-pattern>/ServletFM</url-pattern>
  8. </servlet-mapping>

输出结果:

Code:
  1. HelloFreeMarker!

可以看到这个Servlet类的代码与普通的Java程序中使用FreeMarker大致一样,区别有两个:1,设置FreeMarker加载模板的方法不一样,Servlet中设置加载的方法是setServletContextForTemplateLoading,第一个参数是本web应用的ServletContext,第二个参数是模板文件的路径.;2,结果必须输出到HttpServletResponse,才能被浏览器加载.

分享到:
评论
1 楼 greatwqs 2011-12-03  
提供一个下载的demo不是更好

相关推荐

    freemarker_servlet_demo

    在"freemarker_servlet_demo"这个示例中,我们将深入探讨如何结合Freemarker和Servlet来创建一个简单的Web应用程序。 1. **Freemarker简介** Freemarker是一个基于模板的视图技术,它与业务逻辑分离,允许开发者...

    freemarkerdemo 生成word 插入图片

    在这个"freemarkerdemo生成word插入图片"的示例中,我们主要探讨如何利用Freemarker来创建Word文档,并且将图片集成到这些文档中。这个过程涉及到几个关键的技术点: 1. **Freemarker基础知识**:Freemarker是一个...

    freemarker Demo封装

    总结来说,"freemarker Demo封装"是一个完整的示例,展示了如何在Java web环境中有效地利用Freemarker进行动态内容生成,包括基础的控制台输出,HTML生成,前端展示,并结合Servlet进行服务端的逻辑处理。...

    FreeMarker的一个DEMO

    - `WEB-INF`: 存放Servlet配置文件和FreeMarker模板文件。 - `src/main/java`: Java源代码,可能包括控制器、服务和模型类。 - `src/main/resources`: 配置文件和其他资源。 - `webapp`: 静态资源如CSS、...

    SSM框架freemarker的demo

    FreeMarker是一个强大的、轻量级的、基于模板的技术,它允许开发者将逻辑与表现分离,提高代码的可维护性和可读性。 首先,让我们了解SSM框架中的每个部分: 1. **Spring**:这是一个全面的开发框架,提供了依赖...

    FreeMarker的Web版Demo

    以下是关于FreeMarker、Servlet和Spring的相关知识点,以及可能在Demo中涉及的内容: 1. **FreeMarker**: - **基本概念**:FreeMarker是一个Java库,它根据模板(.ftl文件)和数据模型生成文本输出。它与业务逻辑...

    FreeMarker入门Demo

    FreeMarker与Struts2整合的入门Demo 直接布署在Servlet容器运行

    ssm-freemarker-demo.zip

    8. **配置整合**:整合SSM和FreeMarker需要配置Spring的ApplicationContext.xml,SpringMVC的servlet-context.xml,以及MyBatis的mybatis-config.xml。这些配置文件定义了组件的bean,数据源,视图解析器,扫描的包...

    springboot+webflux+mongodb+freemarker

    与传统的基于Servlet的Spring MVC不同,WebFlux基于Reactor库,支持 Reactive Streams 规范,能够在高并发场景下提供更好的性能和更低的资源消耗。WebFlux可以运行在Servlet容器(如Tomcat)或反应式运行时(如Netty...

    springmvc 实现i18n国际化+freemarker小实例demo

    这样,我们就完成了基于Spring MVC和Freemarker的i18n实现。用户可以根据需求切换语言,系统会显示相应语言的界面。 在提供的`SpringMVCi18n.rar`压缩包中,应该包含了示例项目的源代码,包括配置文件、资源文件、...

    FreeMarker结合Servlet例子03.zip

    本工程旨在演示Servlet和FreeMarker的使用。 本工程编码方式:UTF-8 查看相应博客:http://blog.csdn.net/gaohuanjie/article/details/36676799

    FreeMarker与Servlet整合,静态资源下载

    在实际项目中,FreeMarker与Servlet整合能够实现高效的动态内容生成和静态资源管理。 在整合FreeMarker和Servlet的过程中,首先需要在Web应用的配置文件(如web.xml)中注册FreeMarkerServlet,以便处理.ftl文件。...

    Servlet实现增删改查demo

    为了实现这些功能,Servlet可能还需要配合JSP(Java Server Pages)来生成动态网页,或者使用模板引擎如FreeMarker或Thymeleaf来展示数据。同时,为了更好的用户体验,可能还会涉及AJAX异步请求,使得页面无需刷新就...

    spring4mvc+mybatis3+freemarker+oracle完整框架demo

    这是一个基于Spring4、MyBatis3、FreeMarker和Oracle数据库构建的完整Web应用程序框架的示例项目。这个项目提供了一套快速开发的基础架构,开发者可以在此基础上直接进行业务逻辑的编写,大大节省了项目的初始化时间...

    freemark使用的简单demo

    - **加载模板**: 使用配置对象加载模板文件,例如`freemarkerDemo.ftl`。 - **处理模板**: 创建`Template`对象,将数据模型与模板关联,然后生成输出字符串。 3. **模板语法** - **变量表达式 `${...}`**: 输出...

    基于GAE的Demo

    【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...

    freemarker实例下载

    "springdemo"这个文件名暗示了该实例可能基于Spring框架,因为Spring提供了对Freemarker模板引擎的集成和支持。 1. **Freemarker基础** - Freemarker模板语言(FTL):是一种简单的文本标记语言,用于定义动态内容...

    freeMarker例子

    FreeMarker是一个强大的...综上所述,这个"freeMarker例子"是一个完整的Web应用程序示例,展示了如何使用FreeMarker模板和Servlet协作实现动态网页。学习并理解这个例子,有助于深入掌握FreeMarker在实际开发中的运用。

    java web项目无刷新导出word文档demo,使用freemarker模板引擎

    综上所述,"java web项目无刷新导出word文档demo"项目利用FreeMarker模板引擎实现了在用户无感知的情况下动态生成Word文档,提供了一种高效且用户体验良好的数据导出解决方案。通过学习和理解这个项目,开发者可以将...

    spring4.0框架demo

    《Spring 4.0框架深度探索:基于Maven构建的实战Demo》 Spring框架作为Java企业级应用开发的基石,自推出以来就以其强大的功能和灵活性赢得了广大开发者的心。Spring 4.0作为其一个重要版本,引入了许多改进和新...

Global site tag (gtag.js) - Google Analytics