Velocity

Velocity的几个关键点问题

1Velocity是什么?

2Velocity最佳实践?

3Velocity使用场景?

4VelocityWebApp中的使用?

5Velocity实践?

6Velocity技术结构?

7Velocity技术流程?

8Velocity技术知识点?

综述

计算机生成了可选文字: Hl--rPRequest
5FonVardt0VieW
Ontroller
3.CallACtionWlth
FormBean
VieW
StrU污S6r甘16t
幻lejsp
JSP
幻leVm
ACtion
VeIOcity
JSSperjar
毒
velodty-str'Uts.jar
,'n.‘…叼.--.-..一
}C
沪:'..-....-.…‘:卜,.'‘…。:'.k,…‘。
2FillForm日ean
4CreateBUSineSS
oblects
MOdel
FOFm日ean
Businessobjec朽
6.Renderoutput
HTML
XML
丁XT
CSV

 

单实例还是多实例

Velocity#init是单实例模式,内部持有RuntimeSingleton#init()

Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM,this);

Velocity.init();

Template tmplate = Velocity.getTemplate("foo.vm");

 

VelocityEngine可扩展支持多实例模式,内部直接持有RuntimeInstance,每个VelocityEngine实例都有不同的RuntimeInstance

VelocityEngine ve = new VelocityEngine();

ve.setProperty(VelocityEngine.RUNTIME_LOG_SYSTEM,this);

ve.init();

Template tmplate = ve.getTemplate("foo.vm");

 

资源的加载

计算机生成了可选文字: sourceLoader一or'.即ache
CIas,pathRe,ourceLoader
FileResourceLoader一or透
JarResourceLoader一or盆
Reeeee
白eA
田

加载文件路径以“,”分割

1ClasspathResourceLoader,从ClassLoader#加载模版文件,类似org.ybygjy.HelloVelocity.vm,需要配置

resource.loader = class

class.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader

2FileResourceLoader,从操作系统的文件系统加载模版文件,可以配置Velocity.properties参数,系统默认加载方式。

file.resource.loader.path = <path to root of templates>

file.resource.loader.cache = true/false

file.resource.loader.modificationCheckInterval = <seconds between checks>

3JarResourceLoader,从Jar文件中加载模版文件

resource.loader = jar
jar.resource.loader.class = org.apache.velocity.runtime.resource.loader.JarResourceLoader
jar.resource.loader.path = jar:file:/opt/myfiles/jar1.jar

4WebappLoader,从Web容器上下文中加载模版文件

webapp.resource.loader.description = Velocity Web Resource Loader

webapp.resource.loader.class=org.ybygjy.velocity.loader.CustomerResourceLoader

webapp.resource.loader.path=.,vm

Velocity#Web应用的集成

VelocityServlet的集成有两个基础性的Servlet

1org.apache.velocity.servlet.VelocityServlet,这是个抽象类默认没有提供ToolBox的支持,相对VelocityViewServlet,此类比较没有太多优势,继承然后实现org.apache.velocity.servlet.VelocityServlet.handleRequest(HttpServletRequest, HttpServletResponse, Context)即可,RequestResponse对象都存储在Context中,此类主要不方便的地方在于ServletContext上下文需要自己控制。

2org.apache.velocity.tools.view.servlet.VelocityViewServlet,此类在velocity-tools包中,支持toolbox功能,通常velocityWeb应用的集成会优先选择它,通过扩展resource.loader可支持模板自动加载。

Velocity#ToolBox

ToolBoxVelocity#Tools功能,支持XML定义工具对象,这些对象服务于模板文件内容,ToolBox类似jsp体系下的JSTL

ToolBox组件的初始和配置

这里涉及到因为版本迁移的关系有两种实现方式:

1、实现接口方式

1.1实现org.apache.velocity.tools.view.tools.Configurable接口,用来支持对象实例在接收系统全局配置参数。

1.2、实现org.apache.velocity.tools.view.tools.ViewTool接口,用来支持对象实例初始化时接收ViewContext上下文

2Velocity改良后使用org.apache.velocity.tools.view.ViewToolInfo类封装了具体ToolBox组件对象创建的生命周期,定义组件对象提供configuration(Map dataMap)init(Object obj)方法,分别接收系统配置信息、ViewContext上下文信息。

 

参考资料

  1. http://turbine.apache.org/examples.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值