freemarker调用模板.ftl文件,生成静态shtml文件
public class ControllerServletS extends HttpServlet {
private Configuration cfg;
public void init() {
// 初始化FreeMarker配置;
// - 创建一个配置实例
cfg = new Configuration();
// - 设置模板目录.
cfg.setServletContextForTemplateLoading(
getServletContext(), "WEB-INF/tmpl");
// - 设置模板延迟时间,测试环境设置为0,正是环境可提高数值.
cfg.setTemplateUpdateDelay(0);
// - 设置错误句柄
cfg.setTemplateExceptionHandler(
TemplateExceptionHandler.HTML_DEBUG_HANDLER);
cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
// - 设置默认模板编码
cfg.setDefaultEncoding("gbk");
// - 设置输出编码
cfg.setOutputEncoding("gbk");
cfg.setLocale(Locale.SIMPLIFIED_CHINESE);
}
Template t = cfg.getTemplate(page.getTemplate());
//此处调模板直接输出到终端显示,不生成静态页面.
//Writer out = resp.getWriter();
//try {
//t.process(page.getRoot(), out);
// } catch (TemplateException e) {
// throw new ServletException(
// "加载FreeMarker模板出错", e);
// }
此处生成静态页面
try{
Template t=cfg.getTemplate(templateFileName);
File afile=new File(htmlFilePath+htmlFileName);
Writer out=new OutputStreamWriter(new FileOutputStream(afile),"GB2312");
StringWriter write=new StringWriter();
write.flush();
t.process(propMap, out);
System.out.println(write.toString());
}catch(TemplateException e){
logger.error("error"+templateFileName,e);
return false;
}catch(IOException e){
logger.error("error"+htmlFileName,e);
return false;
}
}
freemarker实例搭建环境和配置
下面演示一个简单的使用项目过程:
1. 使用myeclipse创建一个web项目testFM
2. 把下载到的jar包(freemarker-2.3.9.jar)放到\WebRoot\WEB-INF\lib目录下。下载地址:http://freemarker.sourceforge.net/freemarkerdownload.html (注:官方网站.org的经常打不开)
3. 在WebRoot下面新建templates文件包,然后在里面新建扩展名为ftl的模板。
a) 创建hello.ftl内容如下:
<html>
<head>
<title>hello!</title>
</head>
<body>
<h1>hello ${user}!</h1>
</body>
</html>
4. 在src目录下创建example包 和Hello.java文件,代码如下:
package example;
import java.io.*;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import freemarker.template.*;
public class Hello extends HttpServlet{
private Configuration cfg;
public void init()
{
//初始化FreeMarker配置
//创建一个Configuration实例
cfg = new Configuration();
//设置FreeMarker的模版文件位置
cfg.setServletContextForTemplateLoading(getServletContext(),"templates");
}
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
//建立数据模型
Map root = new HashMap();
//放入对应数据key value
root.put("user","zdz");
//取得模版文件
Template t =cfg.getTemplate("hello.ftl");
//开始准备生成输出
//使用模版文件的charset作为本页面的charset
//使用text/html MIME-type
response.setContentType("text/html; charset=" + t.getEncoding());
PrintWriter out = response.getWriter();
//合并数据模型和模版,并将结果输出到out中
try
{
t.process(root,out);// 用模板来开发servlet可以只在代码里面加入动态的数据
}
catch(TemplateException e)
{
throw new ServletException("处理Template模版中出现错误", e);
}
}
}
5.配置web.xml 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>example.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
6.在WebRoot下面新建引导页面index.html,代码如下:
<html>
<head>
<title>Hello FreeMarker Example</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
</head>
<body>
点击下面链接看看效果:
<hr>
<a href="hello.do">调用Hello模板</a>
</body>
</html>
7.把testFM项目部署到tomcate并启动服务。
8.打开浏览器,输入地址:http://localhost:8080/testFM/
9.点击调用Hello模板 链接,如果出现hello zdz!则说明模板调用成功了!
分享到:
相关推荐
Freemarker是一个强大的模板引擎,常用于Java web开发中,生成动态HTML或其他格式的文本输出。...学习和掌握Freemarker能够提升你在Web开发中的效率,使得页面设计和后端数据处理更加协调,同时降低维护成本。
FreeMarker 是一个强大的模板引擎,常用于Java Web开发中生成动态HTML、XML或其他...这只是一个基础的起点,FreeMarker还有更多高级特性等待探索,如宏定义、自定义指令等,这些将在你进一步深入学习的过程中发挥作用。
在这个“freeMarker例子”中,我们可以深入学习FreeMarker的基本用法和特点。博客链接指向了iteye上的一个博客,尽管具体内容未给出,但通常会包含FreeMarker的安装、配置、基本语法、控制结构、内置函数以及与其他...
最近比较折腾,项目里需要用到静态化,于是就抽时间学习了一下。使用main方法执行,对于刚学习的人来说非常合适的例子。
Freemarker的核心思想是将数据模型与模板结合,通过模板来呈现准备好的数据。 在开始使用Freemarker之前,你需要先下载相关的jar包。你可以访问FreeMarker的官方网站...
在这个例子中,我们将深入探讨如何在SSH框架中使用FreeMarker模板语言。 FreeMarker是一个强大的、轻量级的模板引擎,它允许开发者将业务逻辑与展示层分离,使得页面设计更加灵活。FreeMarker模板文件通常以`.ftl`...
通过阅读“freemarker学习”和“freemarkerѧϰ”这两个文件,你可以深入了解Freemarker的语法和实际应用场景,逐步掌握这个强大的模板引擎。不断练习和实践,你将在不久的将来成为一名熟练的Freemarker开发者,能够...
在这个例子中,`${user}`和`${latestProduct.url}`、`${latestProduct.name}`是FreeMarker指令,它们将在运行时被数据模型中的实际值替换。数据模型可以包含各种对象,如字符串、数字、日期、布尔值以及更复杂的数据...
### FreeMarker 学习资料详解 #### 一、FreeMarker 模板文件构成 FreeMarker 是一种用于生成动态文档的工具,它通过结合固定的文本、注释、变量(插值)以及指令(FTL标签)来创建动态内容。具体而言,FreeMarker ...
这些文件可以作为学习和实践Freemarker与Sitemesh整合的起点,帮助开发者理解如何在实际项目中应用这两种技术。 通过这样的整合,开发者可以利用Freemarker的强大模板语言处理动态内容,同时借助Sitemesh保持页面的...
ssh+FreeMarker静态化网页例子
在这个"利用FreeMarker导出Word小例子"中,我们将探讨如何使用FreeMarker来创建Word文档,这对于新手来说是一次很好的学习机会。 1. **FreeMarker基础知识**: - FreeMarker是一个基于模板的生成器,主要用在Web...
- 学习Freemarker的模板继承和导入,这有助于代码复用和组织。 - 理解Freemarker的内置指令和函数,如`<#list>`、`<#escape>`等,这些工具可以帮助你编写更复杂的模板。 - 探索Freemarker的高级特性,如宏和自定义...
FreeMarker 是一个强大的模板引擎,主要用于生成HTML或其他类型的文本输出,尤其在Web开发中被...通过学习FreeMarker,开发者可以更好地实现MVC架构中的视图层,提高开发效率,并创建出更加灵活、可维护的Web应用程序。
Struts2和FreeMarker是...通过这个例子,你可以深入了解Struts2如何调用Action,以及Action如何与FreeMarker协同工作,形成完整的请求处理流程。同时,这也是一个很好的实践机会,帮助你掌握这两种技术的集成和使用。
FreeMarker是一个强大的模板引擎,主要用于生成动态HTML、XML、Word、Excel等格式的文档。它在Java环境中广泛使用,...通过学习和熟练掌握FreeMarker,你可以更高效地实现数据和视图的分离,提升开发效率和代码质量。