FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
FreeMarker是免费的
1、通用目标
能够生成各种文本:HTML、XML、RTF、Java源代码等等
易于嵌入到你的产品中:轻量级;不需要Servlet环境
插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等
你可以按你所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器
2、强大的模板语言
所有常用的指令:include、if/elseif/else、循环结构
在模板中创建和改变变量
几乎在任何地方都可以使用复杂表达式来指定值
命名的宏,可以具有位置参数和嵌套内容
名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突
输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换
3、通用数据模型
freeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示
你可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰
4、为Web准备
5、智能的国际化和本地化
6、强大的XML处理能力
<#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树
在模板中清楚和直觉的访问XML对象模型
Helloworld
新建一个WEB工程,下载(我使用的是freemarker-2.3.20)freemarker并导入freemarker.jar,在WEB-INF下新建文件夹templates用于存放模版文件
在templates下新建test.ftl,这是示例模版文件。内容就是HTML内容,里面带有一个标记符,用于将来进行变量替换,内容如下:
<html>
<head>
<title>freemarker测试</title>
</head>
<body>
<h1>${message},${name}</h1>
</body>
</html>
新建一个Servlet,用于请求设置变量,并处理模版的输出:
package com.test.servlet;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
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;
@SuppressWarnings("serial")
public class HelloFreeMarkerServlet extends HttpServlet {
// 负责管理FreeMarker模板的Configuration实例
private Configuration cfg = null;
public void init() throws ServletException {
// 创建一个FreeMarker实例
cfg = new Configuration();
// 指定FreeMarker模板文件的位置
cfgsetServletContextForTemplateLoading(getServletContext(),
"/WEB-INF/templates");
}
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 建立数据模型
Map root = new HashMap();
root.put("message", "hello world");
root.put("name", "java小强");
// 获取模板文件
Template t = cfg.getTemplate("test.ftl");
// 使用模板文件的Charset作为本页面的charset
// 使用text/html MIME-type
responsesetContentType("text/html; charset=" + tgetEncoding());
Writer out = response.getWriter();
// 合并数据模型和模板,并将结果输出到out中
try {
tprocess(root, out); // 往模板里写数据
} catch (TemplateException e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void destroy() {
super.destroy();
}
}
注意要在你的web.xml中配置该Servlet:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.test.servlet.HelloFreeMarkerServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
为了方便测试,访问工程直接跳转到Servlet,对主页index.jsp做一个简单修改:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName() +":"+request.getServerPort()+path+"/"; %> <html> <body> <% String mypath = "hello"; response.sendRedirect(basePath + mypath); %> </body> </html>
# freemarker简介
# freemarker
# Java用freemarker导出word实用示例
# Java模版引擎Freemarker
# SpringBoot整合Freemarker的基本步骤
# Springboot整合FreeMarker的实现示例
# Java超级实用的Freemarker工具类
# 你可以
# 应用程序
# 递归
# 新建一个
# 自己的
# 的是
# 是一个
# 这是
# 不需要
# 遍历
# 所需
# 要在
# 不受
# 并将
# 做一个
# 使其
# 因为它
# 可以使用
# 应用于
# 本页面
相关文章:
高端云建站费用究竟需要多少预算?
山东网站制作公司有哪些,山东大源集团官网?
建站之星展会模版如何一键下载生成?
如何选择高效可靠的多用户建站源码资源?
网站制作网站,深圳做网站哪家比较好?
如何在阿里云完成域名注册与建站?
如何通过二级域名建站提升品牌影响力?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
建站之星如何修改网站生成路径?
如何通过WDCP绑定主域名及创建子域名站点?
建站之星代理费用多少?最新价格详情介绍
建站之星IIS配置教程:代码生成技巧与站点搭建指南
浅析上传头像示例及其注意事项
北京制作网站的公司,北京铁路集团官方网站?
如何快速生成专业多端适配建站电话?
建站三合一如何选?哪家性价比更高?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何高效搭建专业期货交易平台网站?
制作营销网站公司,淘特是干什么用的?
C++中引用和指针有什么区别?(代码说明)
如何在IIS7中新建站点?详细步骤解析
如何基于PHP生成高效IDC网络公司建站源码?
深圳网站制作案例,网页的相关名词有哪些?
平台云上自助建站如何快速打造专业网站?
如何在腾讯云免费申请建站?
中山网站制作网页,中山新生登记系统登记流程?
如何快速搭建虚拟主机网站?新手必看指南
广州美橙建站如何快速搭建多端合一网站?
建站主机选购指南与交易推荐:核心配置解析
高防服务器租用如何选择配置与防御等级?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
已有域名能否直接搭建网站?
建站之星如何快速更换网站模板?
如何选择高效稳定的ISP建站解决方案?
如何制作网站标识牌,动态网站如何制作(教程)?
金*站制作公司有哪些,金华教育集团官网?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
c++怎么用jemalloc c++替换默认内存分配器【性能】
如何在阿里云高效完成企业建站全流程?
济南专业网站制作公司,济南信息工程学校怎么样?
如何用美橙互联一键搭建多站合一网站?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
如何用西部建站助手快速创建专业网站?
如何做网站制作流程,*游戏网站怎么搭建?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何在Windows服务器上快速搭建网站?
如何选择域名并搭建高效网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
*请认真填写需求信息,我们会在24小时内与您取得联系。