Velocity学习Markdown文档下载
Velocity是一个基于Java的模板引擎,可以通过特定的语法获取在java对象的数据 , 填充到模板中,从而实现界面和java代码的分离!
- Web应用程序 : 作为为应用程序的视图, 展示数据。
- 源代码生成 : Velocity可用于基于模板生成Java源代码
- 自动电子邮件 : 网站注册 , 认证等的电子邮件模板
- 网页静态化 : 基于velocity模板 , 生成静态网页
Velocity主要分为app、context、runtime和一些辅助util几个部分。
- app模块 : 主要封装了一些接口 , 暴露给使用者使用。主要有两个类,分别是Velocity(单例)和VelocityEngine。
- Context模块 : 主要封装了模板渲染需要的变量
- Runtime模块 : 整个Velocity的核心模块,Runtime模块会将加载的模板解析成语法树,Velocity调用mergeTemplate方法时会渲染整棵树,并输出最终的渲染结果。
- RuntimeInstance类为整个Velocity渲染提供了一个单例模式,拿到了这个实例就可以完成渲染过程了。
使用velocity定义html模板 , 将动态数据填充到模板中 , 形成一个完整的html页面
- 创建项目(maven)
- 引入依赖
- 定义模板
- 输出html
在项目目录下创建模板文件
Velocity解决了如何在后台程序和网页之间传递数据的问题,后台代码和视图之间相互独立,一方的修改不影响另一方 .
他们之间是通过环境变量(Context)来实现的,网页制作一方和后台程序一方相互约定好对所传递变量的命名约定,比如上个程序例子中的site, name变量,它们在网页上就是$name ,$site 。
只要双方约定好了变量名字,那么双方就可以独立工作了。无论页面如何变化,只要变量名不变,那么后台程序就无需改动,前台网页也可以任意由网页制作人员修改。这就是Velocity的工作原理。
Velocity Template Language (VTL) , 是Velocity 中提供的一种模版语言 , 旨在提供最简单和最干净的方法来将动态内容合并到网页中。简单来说VTL可以将程序中的动态数展示到网页中
VTL的语句分为4大类:注释 , 非解析内容 , 引用和指令。
1. 行注释
2. 块注释
3. 文档注释
所谓非解析内容也就是不会被引擎解析的内容。
引用语句就是对引擎上下文对象中的属性进行操作。语法方面分为常规语法()和正规语法(${属性})。
语法
示例
语法
示例
方法引用实际就是指方法调用操作,关注点返回值和参数 , 方法的返回值将输出到最终结果中
语法
示例
指令主要用于定义重用模块、引入外部资源、流程控制。指令以 作为起始字符。
#set
作用 : 在页面中声明定义变量
语法:
示例 :
#if/#elseif/#else
作用 : 进行逻辑判断
语法 :
示例 :
#foreach
作用 : 遍历循环数组或者集合
格式:
示例 :
#include
作用 : 引入外部资源 , 引入的资源不会被引擎所解析
语法 :
- resource可以为单引号或双引号的字符串,也可以为$变量,内容为外部资源路径。
- 注意 : 路径如果为相对路径,则以引擎配置的文件加载器加载路径作为参考
示例 :
#parse
作用 : 引入外部资源 , 引入的资源将被引擎所解析
语法 :
- resource可以为单引号或双引号的字符串,也可以为$变量,内容为外部资源路径。
- 注意 : 路径如果为相对路径,则以引擎配置的文件加载器加载路径作为参考系
示例 :
#define
作用 :
语法 :
示例 :
#evaluate
作用 : 动态计算 , 动态计算可以让我们在字符串中使用变量
语法 :
示例 :
作用 : 定义重用模块(可带参数)
语法 :
定义语法
调用语法
示例 :
在实际项目开发过程中, 编写基础的CRUD操作代码, 往往会花费我们大量的时间 , 而且这些CRUD代码的基础结构基本上是固定的 , 如果能有一个代码生成器 , 能够帮助我们把这些代码生成出来 , 我们就可以节省出大量的时间关注核心业务代码的开发, 大大提高了我们的开发效率 !
需求 : 使用velocity实现一个简单的代码生成器 , 生成项目开发过程中的基础CRUD代码
- 创建项目
- 导入依赖
- 编写模板
- 生成代码
一般我们的项目开发将项目分为三层 , 我们的代码生成器就基于传统的三层架构生成代码 , 所以我们需要为每一层的每一个类创建模板 , 所以需要有如下模板 :
- Controller.java.vm : 控制层模板
- Service.java.vm : 业务层接口模板
- ServiceImpl.java.vm : 业务层实现模板
- Dao.java.vm : 数据服务层模板(数据访问层基于通用Mpper实现)
Controller.java.vm
Service.java.vm
ServiceImpl.java.vm
Dao.java.vm
我们可以封装一个生成代码的工具类 , 后期生成代码运行工具类即可
运行完毕之后, 可以看到输出路径下回自动生成一个压缩文件 , 解压之后将里面的代码copy到我们的项目之中即可 ! </string,object></string,object></string,>
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/5840.html