【JavaWeb】FreeMarker快速入门
FreeMarker
Freemarker是免费开源的模板引擎技术;
Freemarker脚本为Freemarker Template Language;
Freemarker提供了大量内建函数来简化开发;
JSP与Freemarker
JSP | Freemarker | |
---|---|---|
官方标准 | 是 | 否 |
执行方式 | 编译型 | 解释型 |
执行效率 | 高 | 低 |
开发效率 | 低 | 高 |
扩展能力 | 弱 | 强 |
数据提取 | JSTL+EL | 内置标签 |
FreeMarker基本用法
FreemarkerSample1.java
package freemarker;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;
public class FreemarkerSample1 {
public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException,
ParseException, IOException, TemplateException {
// 1.加载模板
// 创建核心配置对象
Configuration config = new Configuration(Configuration.VERSION_2_3_28);
// 设置加载的目录
config.setClassForTemplateLoading(FreemarkerSample1.class, ""); // ""代表当前包
// 得到模板对象
Template t = config.getTemplate("sample1.ftl");
// 2.创建数据
Map<String, Object> data = new HashMap<>();
data.put("site", "百度");
data.put("url", "http://www.baidu.com");
// 3.产生输出
t.process(data, new OutputStreamWriter(System.out));
}
}
sample1.ftl
<#-- 这是注释 -->
${site}-${url}
控制台输出
百度-http://www.baidu.com
FTL取值
- ${属性名} 取值,可对属性进行计算
- ${属性名!默认值} 如果属性不存在的话使用默认值
- ${属性名?string("")} 格式化输出
分支判断
<#-- if -->
<#if state == 1>
我是1
<#elseif state == 2>
我是2
</#if>
<#if user??> <#-- 判断对象是否为null -->
我不是null
</#if>
<#-- switch -->
<#switch state>
<#case 1>
我是1
<#break>
<#case 2>
我是2
<#break>
<#default>
其他
</#switch>
list迭代
<#-- list迭代列表 -->
<#list students as stu>
<li>${stu_index}-${stu.name}</li>
</#list>
<#-- list迭代Map -->
<#list map?keys as key>
${key}:${map[key]}
</#list>
常用内建函数
函数名 | 说明 | 示例 |
---|---|---|
lower_case/upper_case | 大小写转换 | "abcdefg"?upper_case |
cap_first | 首字母大写 | "jackson"?cap_first |
index_of | 查找字符索引 | "abcdef"?index_of("b") |
length | 返回字符串长度 | "abcdef"?length |
round/floor/ceiling | 四舍五入/下取整/上取整 | pi?floor |
size | 得到集合元素总数 | students?size |
first/last | 获取第一个/最后一个元素 | students?first |
sort_by | 按某个属性对集合排序 | list?sort_by("time") |
<#-- ?string可以实现三目运算符的操作 -->
${(words?index_of("blood") != -1)?string("包含敏感词汇", "不包含敏感词汇")}
<#-- replace -->
${words?replace("blood", "*****")}
<#-- sort_by返回一个新的集合,默认升序排列 -->
<#-- reverse将顺序反转 -->
<#list computers?sort_by("price")?reverse as c>
${c.sn}-${c.price}
</#list>
freemarker中文官方参考手册: http://freemarker.foofun.cn/
Freemarker与Servlet整合
配置FreemarkerServlet
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>fm</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/WEB-INF/ftl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
</web-app>
【JavaWeb】FreeMarker快速入门的更多相关文章
- FreeMarker 快速入门
FreeMarker 快速入门 FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自 ...
- springboot2.0整合freemarker快速入门
目录 1. 快速入门 1.1 创建工程pom.xml文件如下 1.2 编辑application.yml 1.3 创建模型类 1.4 创建模板 1.5 创建controller 1.6 测试 2. F ...
- FreeMarker快速入门
虽然当前比较推荐使用thymeleaf替代jsp作为java网页开发的模板语言,不过公司推荐使用freemarker,那就顺势而为,速度学一发,然后迅速开始新项目了. 简介 FreeMarker第一个 ...
- 【FreeMarker】FreeMarker快速入门(一)
什么是 FreeMarker FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 它不是面向最终用户 ...
- SpringMVC总结一:快速入门
MVC: MVC是一种架构模型,本身没有什么功能,只是让我们的项目结构更加合理,流程控制更加清晰,一般包含三个组件: **Model(模型)**:数据模型,用于提供要展示的数据.一般包含数据和行为 ...
- 零基础快速入门SpringBoot2.0教程 (三)
一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...
- MyBatis学习总结(一)——MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis快速入门
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
- MyBatis学习总结(一)——MyBatis快速入门(转载)
本文转载自http://www.cnblogs.com/jpf-java/p/6013537.html MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了 ...
随机推荐
- python-pyppeteer模块使用汇总
一.简单代码示例 import asyncio from pyppeteer import launch async def main(): browser = await launch() page ...
- GO基础之Map
go开发手册: https://studygolang.com/pkgdoc 一.什么是map 有资料翻译成地图.映射或字典.但是大多数习惯上翻译成集合.1.map是Go中的内置类型,它将一个值与 ...
- HTML元素分类 块级元素 内联元素 块级内联元素
概述 HTML中存在许多元素,如<h1>,<p>,<a>,<block>,<image>,这些元素可分为三类,依次是块级元素,内联元素,块级 ...
- 微信两种签名算法MD5和HMAC-SHA256
在做微信接口开发的过程中, 有时候发现会提示签名校验失败, 一模一样的签名逻辑就是有些接口跑步通, 找了一圈发现挺坑的; 原来是有些接口的signType签名类型有区别, 有些接口signType要求 ...
- opencv-python 图像处理(五)
Canny边缘检测 1) 使用高斯滤波器,以平滑图像,滤除噪声. 2) 计算图像中每个像素点的梯度强度和方向. 3) 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测 ...
- 如何开发优质的 Flutter App:Flutter App 软件调试指南
本次博主带来的是<深入 Flutter 系列课程>第三讲,主要聊聊如何进行 Flutter App 代码的调试.本次课程将在GitChat平台上免费进行,通过本场 Chat,您将获得以下技 ...
- 微信小程序开发——上传代码片段到git仓库
微信开发者工具除了自带的git版本管理(本地服务)之外,还可以推送到在线git仓库中去,这样别人也可以通过git来拉取你的代码片段或小程序. 一.1.登录git 一.2.点击创建项目 一.3.填写项 ...
- start_udev 是不是会写磁盘头
遇到一个案例,在这里记录一下 一套Oracle 11.2.0.4 RAC环境,操作系统是RHEL 6.5,共享磁盘是通过UDEV实现RAW绑定设备名,如下 [root@rac1 opt]# ll /d ...
- C# JsonConvert 序列号 DateTime类型 格式多T
序列化字符串后,值变成了"2018-02-05T00:00:00" 序列化时候 需要更改一下日期转换方式: IsoDateTimeConverter timeConverter = ...
- 使用sessionStorage获取值和设置值
<body><button id="btn1">设置值</button><button id="btn2">获取 ...