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的默认标签语法至关重要。FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件...
而Freemarker则是一种轻量级的、基于模板的Java模板引擎,常用于Web应用中的动态内容生成,比如JSP替代技术。它允许开发者将业务逻辑与页面展示分离,提高代码的可维护性和可读性。 "eclipse的freemarker插件"是指...
`freemarker-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...
FreeMarker的设计理念是将表现层(视图)和业务逻辑层(控制器)分离,从而实现MVC(Model-View-Controller)架构中的“View”部分。 FreeMarker的核心概念是模板文件,这是一种特殊的文本文件,其中包含可替换的...
赠送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.28.jar"是Freemarker库的一个具体版本,版本号为2.3.28,它是Java的一个可执行的JAR(Java Archive)文件,用于在Eclipse集成开发环境中作为插件使用。 在Freemarker的2.3.28版本中,我们可以...
1. **创建模板**:在Freemarker中,我们需要创建一个`.ftl`(Freemarker Template Language)文件,其中包含静态文本和动态占位符。动态占位符由${}或#{}包裹,用于插入数据模型中的值。例如,`${title}</h1>`会将...
2.3.23是FreeMarker的一个稳定版本,这个版本的官方中文文档提供了全面的指导和说明,帮助开发者更好地理解和使用这个模板语言。 在FreeMarker的核心概念中,它是一个基于数据驱动的模板语言。这意味着,开发者不...
赠送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文档:...
### Velocity与FreeMarker的区别 在IT领域特别是Java开发中,模板引擎是不可或缺的一部分,它们用于将数据模型转换为HTML、PDF、Word文档等格式。在众多模板引擎中,Velocity和FreeMarker是两种非常受欢迎的选择。...
Velocity和Freemarker模板技术比较 模板技术在现代软件开发中扮演着重要角色,而在目前最流行的两种模板技术中, Velocity 和 Freemarker 独占鳌头。在 WebWork2 中,我们可以随意选择使用 Freemarker 或 Velocity ...
Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...
FreeMarker提供了一种灵活且强大的方式来处理动态内容,尤其适用于Web开发中的视图层。在FreeMarker中实现通用的分页功能是提高Web应用程序性能和用户体验的重要一环。 ### FreeMarker通用分页知识点解析 #### 1. ...
这个示例是关于如何使用Freemarker来生成XML文件,对于初学者来说,理解这个过程有助于掌握Freemarker的基本用法和XML的生成技巧。 在Java中,Freemarker与数据模型结合,通过模板文件生成输出。对于XML生成,首先...
本话题主要探讨的是如何利用可视化div布局来生成FreeMarker模板,并结合Spring MVC 3框架进行应用。下面将详细阐述这些概念及其相关知识点。 1. **FreeMarker模板引擎**:FreeMarker是一个开源的Java模板引擎,它...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
Freemarker是一个强大的模板引擎,常用于JavaEE应用中的视图层处理,尤其与Struts2等MVC框架配合使用,能实现灵活的动态页面渲染。这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的...
根据提供的文件信息,我们可以深入探讨FreeMarker的相关知识点及其在网页模板设计中的应用。FreeMarker是一种用Java编写的模板引擎,其主要用途在于帮助开发者高效地生成动态内容,尤其是在Web开发领域有着广泛的...
**SpringBoot集成Freemarker与Shiro框架详解** 在现代Web开发中,SpringBoot因其简洁、高效的特性,已经成为很多开发者的选择。而FreeMarker和Shiro则分别是常用的模板引擎和安全框架,它们能帮助我们构建出功能...