Java模版引擎之Freemarker篇
来源:互联网 发布:手机淘宝模拟试衣服 编辑:程序博客网 时间:2024/06/06 21:28
一.初识Freemarker
1.1什么是Freemarker
- Freemarker是一款模版引擎
- Freemarker不是web框架
- Freemarker官网http://http://freemarker.org
1.2 数据模型+模板输出=html(输出)
1.3前端设计师和程序员的侧重点
- MVC设计(Model,View,Controller)
- 前端设计师侧重于View(模版设计)
- 后端设计师全面掌握MVC
二.maven构建Freemarker项目
2.1 Maven构建Spring+Freemarker项目
Eclipse+Maven使用简介
Maven这个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包
Maven依赖Spring和FreeMarker的jar包
pom.xml文件主要配置项目所需的jar包(这里包括spring开发所需jar包和freemarkerjar包)
freemarker依赖如下<dependency><groupid>org.freemarker</groupid><artifactid>freemarker</artifactid><version>2.3.20</version></dependency>
Spring配置文件和Freemarker Servlet配置文件
(1) Spring配置文件applicationContext.xml
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的Java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。
(2) Spring Freemarker Servlet配置文件Spring-servlet.xml
对freemarker的配置(两种方式1:直接配置2:引入单独的文件freemark.properties)
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerVariables"> <map> </map> </property> <property name="freemarkerSettings"> <props> <prop key="tag_syntax">auto_detect</prop> <prop key="template_update_delay">0</prop> <prop key="defaultEncoding">UTF-8</prop> <prop key="url_escaping_charset">UTF-8</prop> <prop key="locale">zh_CN</prop> <prop key="boolean_format">true,false</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="time_format">HH:mm:ss</prop> <prop key="number_format">0.######</prop> <prop key="whitespace_stripping">true</prop> <prop key="classic_compatible">true</prop> </props> </property></bean>
视图配置:
三.springboot集成freemarker
四.freemarker取值(插值)
4.1java中常常用的数据模型
- 基本数据类型(比如Integer)
- 封装的数据类型(比如User对象)
- 集合类型:List,Map
4.2取值指令
常用${var}语法进行取值
@Controller
@RequestMapping(“/”)
public class FreemarkerController1 {//freemarker取值,插值@RequestMapping("/free1")public ModelAndView free1(){ ModelAndView mv1 = new ModelAndView(); mv1.addObject("intVar",100); mv1.addObject("LongVar",10000000000000000L); return mv1;}}
整数:
intVar长整数: {LongVar}对null,不存在对象取值${var!},这样可以防止抛异常
对于NUL或不存在的值取值时,需要${var!’默认值’}
取包装对象的值,通过“点”语法:${User.name}
取值的时候进行计算,赋值
变量的赋值运算
<#assign a=100> 声明变量a值为100.
变量运算
赋值: a =a显示:a=100;运算:a+100= {a + 100} 后面的表示运算 结果显示: a + 100 = 200Date类型格式${date?String(‘yyyy-MM-dd’)}
Freemarker支持的是java.sql.Date,可以直接输出,如果使用java.util.Date会报错,可以这样处理:1 使用java.sql.Date转换 2 在模板中使用?string(‘yyyy-MM-dd’)进行转换
如何注意HTML内容:${var?html}
${(userObj.name)!}给userObj.name加括号后再加!(判空符号)表示对整体进行判空,即现对userObj判空,存在后在对name进行判空。添加?html可以输出原始字符串
4.3逻辑指令:if switch
4.3.1 if
if语法
if多条件判断
4.4集合List的遍历
${(userObj.name)!}给userObj.name加括号后再加!(判空符号)表示对整体进行判空,即现对userObj判空,存在后在对name进行判空。添加?html可以输出原始字符串
4.3.2 switch
每个case都要break,不然会按照顺序执行,还要有一个default,可以没有break,case还支持字符串
4.4集合Map的遍历
<#list map?keys as key>${key}(对key取值):${map[key](对value取值)}<#list>
五.自定义函数简介
5.1字符串集合操作
5.1.1string基本操作指令
5.2自定义函数
使用自定义函数:
1 代码中定义:mv.addObject(“sort_int”,new SortMethod());
2 模板中使用:<#assign mylist=[1,2,3,4,5,6] />
5.3自定义指令
自定义指令用@,freemarker内敛指令用#
自定义指令在Freemarker的配置文件中配置,key为指令名称,value-ref为定义的一个bean
自定义指令需要实现TemplateDirectiveModel,重写execute方法
5.4freemarker常用内建函数
5.4.1处理字符串的内建函数
subtring:字符截取cap_first:将字符串的第一个首字母变成大写ends_with:以什么结尾contains:是否包含什么date,datetime,time 将字符串转换为date,datetime,time日期类型stars_with:以什么开始index_of:某个字符在某个字符串中从头(0)开始第一次出现的第几个位置(即索引)last_index_of:某个字符在某个字符串中从尾(字符串.length-1)开始第一次出现的第几个位置(即索引)split:以某个符号为分隔,将其结果封装成一个数组tirm:去掉字符串首位的空格
5.4.2处理数字的内建函数
string x?string("0.##") 对数字进行格式化round 四舍五入floor 把小数点去掉 ceiling 数字进1,变成整数
5.4.3处理list的内建函数
first 取list第一个值last 取list最后一个值seq_contains 这个序列是否包含seq_index_of 这个序列所在的位置size list长度reverse 倒序sort 升序排序sort_by 根据属性排序trunk 把字符串分块处理
5.4.4其他内建函数
is函数:判断变量的类型is_string 字符串 is_number 整数is_method 方法() 对变量进行判断hs_content 判断对象是否是空值,是不是有内容eval 求值函数
5.5freemarker内建函数代码讲解
macro,nested,return语法
macro 代码栗子
nested 个性化设置
函数function 调用栗子
6总结
- Java模版引擎之Freemarker篇
- 实战Java模版引擎Freemarker
- springboot实战之整合freemarker模版引擎
- JAVA模版引擎Freemarker常用标签(一)
- JAVA模版引擎Freemarker常用标签(二)
- 模版引擎FreeMarker
- freemarker 模版引擎
- Java模板引擎之Freemarker
- Java模板引擎之Freemarker
- Java模板引擎之 FreeMarker
- Java模板引擎之FreeMarker
- Spring Boot学习之旅:(十三)模版引擎-FreeMarker
- java模版引擎freemarker和velocity的对比
- FreeMarker 是一个模版引擎
- Java模板引擎之Freemarker(二)
- 全面探索 FreeMarker 模版引擎的扩展性
- 全面探索 FreeMarker 模版引擎的扩展性
- 全面探索 FreeMarker 模版引擎的扩展性
- 《数据库SQL实战》获取所有部门当前manager的当前薪水情况
- seq2seq学习笔记
- ECMAScript 6 学习(二)async函数
- 6、volley 源码解析之工作流程综述
- Linux运维学习笔记之五:Linux目录结构
- Java模版引擎之Freemarker篇
- hadoop系列三:mapreduce的使用(一)
- VC++6.0编辑框显示行号
- laravel 自定义的控制台命令
- Mybatis多对一的处理
- View的滑动的基本知识
- 功能测试工具QTP & 性能测试工具LoadRunner使用总结
- SQLServer 创建dtsx包更新统计信息(示例)
- 现代C++新四大名著及C++学习杂谈