`

基于servlet的 Freemarker Demo

阅读更多
http://student.csdn.net/space.php?uid=14032&do=blog&id=52352
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:
<dependency> 
        <groupId>org.freemarker</groupId> 
        <artifactId>freemarker</artifactId> 
        <version>2.3.16</version> 
</dependency> 


servlet程序:

Code:
import java.util.*; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import freemarker.template.*; 
 
public class HelloServlet extends HttpServlet{ 
    private static final long serialVersionUID = 1L; 
    private Configuration cfg;  
    public void init() { 
        //初始化FreeMarker配置 
        //创建一个Configuration实例   第一步
        cfg = new Configuration(); 
        //设置FreeMarker的模版文件位置  
        cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates"); 
    } 
 
    public void service(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException{         
        //建立数据模型  第二步
        Map root = new HashMap(); 
        root.put("message", "Hello FreeMarker!");      
        //取得模版文件  第三步
        Template t = cfg.getTemplate("test.ftl");         
        // 开始准备生成输出 
        // - 使用模版文件的charset作为本页面的charset 
        // - 使用text/html MIME-type 
        response.setContentType("text/html; charset=" + t.getEncoding()); 
        Writer out = response.getWriter(); 
        //合并数据模型和模版,并将结果输出到out中 
        try{ 
            t.process(root, out);   //第四步
        }  
   catch (TemplateException e){ 
            throw new ServletException("处理Template模版中出现错误", e); 
        } 
    } 

web.xml 配置:

Code:
<servlet> 
    <servlet-name>ServletFM</servlet-name> 
    <servlet-class>HelloServlet</servlet-class> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>ServletFM</servlet-name> 
    <url-pattern>/ServletFM</url-pattern> 
  </servlet-mapping> 
输出结果:

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

相关推荐

    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