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来创建一个简单的Web应用程序。 1. **Freemarker简介** Freemarker是一个基于模板的视图技术,它与业务逻辑分离,允许开发者...
在这个"freemarkerdemo生成word插入图片"的示例中,我们主要探讨如何利用Freemarker来创建Word文档,并且将图片集成到这些文档中。这个过程涉及到几个关键的技术点: 1. **Freemarker基础知识**:Freemarker是一个...
总结来说,"freemarker Demo封装"是一个完整的示例,展示了如何在Java web环境中有效地利用Freemarker进行动态内容生成,包括基础的控制台输出,HTML生成,前端展示,并结合Servlet进行服务端的逻辑处理。...
- `WEB-INF`: 存放Servlet配置文件和FreeMarker模板文件。 - `src/main/java`: Java源代码,可能包括控制器、服务和模型类。 - `src/main/resources`: 配置文件和其他资源。 - `webapp`: 静态资源如CSS、...
FreeMarker是一个强大的、轻量级的、基于模板的技术,它允许开发者将逻辑与表现分离,提高代码的可维护性和可读性。 首先,让我们了解SSM框架中的每个部分: 1. **Spring**:这是一个全面的开发框架,提供了依赖...
以下是关于FreeMarker、Servlet和Spring的相关知识点,以及可能在Demo中涉及的内容: 1. **FreeMarker**: - **基本概念**:FreeMarker是一个Java库,它根据模板(.ftl文件)和数据模型生成文本输出。它与业务逻辑...
FreeMarker与Struts2整合的入门Demo 直接布署在Servlet容器运行
8. **配置整合**:整合SSM和FreeMarker需要配置Spring的ApplicationContext.xml,SpringMVC的servlet-context.xml,以及MyBatis的mybatis-config.xml。这些配置文件定义了组件的bean,数据源,视图解析器,扫描的包...
与传统的基于Servlet的Spring MVC不同,WebFlux基于Reactor库,支持 Reactive Streams 规范,能够在高并发场景下提供更好的性能和更低的资源消耗。WebFlux可以运行在Servlet容器(如Tomcat)或反应式运行时(如Netty...
这样,我们就完成了基于Spring MVC和Freemarker的i18n实现。用户可以根据需求切换语言,系统会显示相应语言的界面。 在提供的`SpringMVCi18n.rar`压缩包中,应该包含了示例项目的源代码,包括配置文件、资源文件、...
本工程旨在演示Servlet和FreeMarker的使用。 本工程编码方式:UTF-8 查看相应博客:http://blog.csdn.net/gaohuanjie/article/details/36676799
在实际项目中,FreeMarker与Servlet整合能够实现高效的动态内容生成和静态资源管理。 在整合FreeMarker和Servlet的过程中,首先需要在Web应用的配置文件(如web.xml)中注册FreeMarkerServlet,以便处理.ftl文件。...
为了实现这些功能,Servlet可能还需要配合JSP(Java Server Pages)来生成动态网页,或者使用模板引擎如FreeMarker或Thymeleaf来展示数据。同时,为了更好的用户体验,可能还会涉及AJAX异步请求,使得页面无需刷新就...
这是一个基于Spring4、MyBatis3、FreeMarker和Oracle数据库构建的完整Web应用程序框架的示例项目。这个项目提供了一套快速开发的基础架构,开发者可以在此基础上直接进行业务逻辑的编写,大大节省了项目的初始化时间...
- **加载模板**: 使用配置对象加载模板文件,例如`freemarkerDemo.ftl`。 - **处理模板**: 创建`Template`对象,将数据模型与模板关联,然后生成输出字符串。 3. **模板语法** - **变量表达式 `${...}`**: 输出...
【基于GAE的Demo】是一个使用Eclipse集成开发环境构建的项目,主要展示了如何在Google App Engine(GAE)平台上整合Struts2、Spring和Tiles框架。GAE是Google提供的一个云计算平台,允许开发者在Google的基础设施上...
"springdemo"这个文件名暗示了该实例可能基于Spring框架,因为Spring提供了对Freemarker模板引擎的集成和支持。 1. **Freemarker基础** - Freemarker模板语言(FTL):是一种简单的文本标记语言,用于定义动态内容...
FreeMarker是一个强大的...综上所述,这个"freeMarker例子"是一个完整的Web应用程序示例,展示了如何使用FreeMarker模板和Servlet协作实现动态网页。学习并理解这个例子,有助于深入掌握FreeMarker在实际开发中的运用。
综上所述,"java web项目无刷新导出word文档demo"项目利用FreeMarker模板引擎实现了在用户无感知的情况下动态生成Word文档,提供了一种高效且用户体验良好的数据导出解决方案。通过学习和理解这个项目,开发者可以将...
《Spring 4.0框架深度探索:基于Maven构建的实战Demo》 Spring框架作为Java企业级应用开发的基石,自推出以来就以其强大的功能和灵活性赢得了广大开发者的心。Spring 4.0作为其一个重要版本,引入了许多改进和新...