【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消除了 ...
随机推荐
- Eclipse:批量将Java源代码文件的编码从GBK转为UTF-8
很简单的几行代码,就可以批量将GBK格式的java文件转为UTF-8格式. 基本上所有文本文件的编码转换都可以采用这种方式. import java.io.File; import java.io.I ...
- vue关于mock的简单使用
一.mock 1.简介 mock是一个模拟数据生成器,旨在帮助前端独立于后端进行开发,帮助编写单元测试.其可模拟 Ajax 并返回模拟数据,使前端不用去调用后端的接口,方便测试. 2.vue直接使用m ...
- 假设高度已知,请写出三栏布局,其中左右各为300px 中间自适用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux-打包压缩命令
内容总结自<鸟哥的Linux私房菜>http://cn.linux.vbird.org/linux_basic/0240tarcompress.php 一.打包/压缩文件常见扩展名 *.g ...
- 爬取沪深a股数据
首先从东方财富网获取股票代码 再从网易财经下载股票历史数据 import requests import random from bs4 import BeautifulSoup as bs impo ...
- 大数据量数据库设计与优化方案(SQL优化)
转自:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html 一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的 ...
- 算法问题实战策略 FENCE
地址 https://algospot.com/judge/problem/read/FENCE 开始考虑暴力遍历 #include <iostream> #include <str ...
- seq参数 RANDOM 参数 openssl参数 cut参数
#seq命令用于以指定增量从首数开始打印数字到尾数 语法: [2] seq [选项] 首数 尾数 [3] seq [选项] 首数 增量 尾数选项: seq 实例 一 存入数据库 然后 输出数据库的代码 ...
- 使用composer安装Larave提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Composer”
解决办法: 根据官方手册执行composer global require "laravel/installer" 显示Changed current directory to C ...
- 一文学会 TypeScript 的 82% 常用知识点(上)
前端专栏 2019-11-22 19:17:55 对于前端从业者来说,TypeScript(以下简称 TS)已经不算是新技术. Vue3 的源码基于 TS 编写, Angular 项目默认支持 TS ...