博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
点我吧工作总结(技术篇) Velocity
阅读量:5978 次
发布时间:2019-06-20

本文共 4119 字,大约阅读时间需要 13 分钟。

1. 什么是velocity

  Velocity[vəˈlɑ:səti],名称字面翻译为:速度、速率、迅速。该项目的开源地址:http://velocity.apache.org/,它是一个基于Java的模板引擎,什么叫基于Java的模板引擎,就是说,在velocity中可以直接引用Java定义的对象。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

2. Velocity是怎么被解析的

  我们知道使用jsp技术,让Java代码出现在view层,不易于维护,增加了前端代码量。而velocity则正是jsp技术的替代者。velocity是一种template引擎,利用先编辑完的格式来作为大纲,把一些需要变化的地方作为参数传入,显示时将模板和参数合并,达到最终输出的样子。

3. Velocity渲染过程 

  1. 首先初始化启动Velocity引擎,可以通过 Velocity.init()或者新建VelocityEngine类,并调用其中的init()方法; 
  2. 创建一个 VelocityContext对象,将变量名与值关联起来,与HashMap对象相类似。可以直接将值传递给页面进行引用;
  3. 获取一个模板,利用Velocity.getTemplate()获取一个渲染模板,即要将数据最终渲染在哪个页面上去。
  4. 创建一个输出流,将上述创建的数据最终渲染到模板上,采用的方法template.merge()。
1 try { 2             Velocity.init("velocity.properties"); 3             VelocityContext context = new VelocityContext(); 4             String templateFile = "template.vm"; 5             context.put("paramObject", "onlyone"); 6             Template template = null; 7             template = Velocity.getTemplate(templateFile); 8             BufferedWriter writer = new BufferedWriter(new FileWriter("velocity.data")); 9             if (template != null) template.merge(context, writer);10             writer.flush();11             writer.close();12         } catch (Exception e) {13             e.printStackTrace();14         }
代码示例

4. Velocity与SpringMVC的整合

1 
2
org.apache.velocity
3
velocity
4
1.7
5
6 7
8
org.apache.velocity
9
velocity-tools
10
2.0
11
pom.xml中引入velocity-1.7.jar包

  首先,需要在Maven项目中的pom.xml中引入velocity-1.7.jar包和velocity-tools-generic-2.0.jar包,为SpringMVC配置多视图,并添加velocity的视图配置(由于Velocity是用来连接Model和View层的),既然,Velocity是要依赖于SpringMVC的,那么我们先看看在Web.xml中对于SpringMVC的相关配置,

1 
2
3
contextConfigLocation
4
classpath:applicationContext.xml
5
6 7
8
9
org.springframework.web.context.ContextLoaderListener
10
11 12
13
14
springDispatcher
15
16 org.springframework.web.servlet.DispatcherServlet17
18
19
contextConfigLocation
20
21 /WEB-INF/springDispatcher-servlet.xml22
23
24
25 26
27
springDispatcher
28
*.do
29
web.xml中配置SpringMVC

Spring MVC是基于DispatcherServlet来拦截请求,并找到相应的控制器进行业务逻辑处理。从web.xml中,我们可以看到web容器在启动的时候,它会加载

WEB-INF/springDispatcher-servlet.xml的配置文件,来启动MVC模块,所以我们的Velocity相关信息要配置在springDispatcher-servlet.xml中
1 <--1、对模型视图名称的解析,即在模型视图名称添加前后缀 --> 2 
3
4
5
6
7
8
9
text/html;charset=UTF-8
10
11
12 13 <--2、velocity的一些设置 -->14
15
16
velocity/
17
18
19
20
UTF-8
21
UTF-8
22
text/html;charset=UTF-8
23
24
25
springDispatcher-servlet.xml中的部分配置信息截取

这部分配置文件中,主要配置两个部分:velocityViewResolver( 配置Velocity视图解析器)和velocityConfigurer(配置Velocity引擎)在配置的第一部分,我们定义了模型视图名称的解析规则,即使用了velocity模板视图解析器:VelocityViewResolver,因为在SpringMVC中有视图解析器viewResolver,通过这段配置文件,我们可以寻找采用模板的视图配置。于此同时,还定义了*.vm模板在后端的存放路径,这样Spring就与velocity模板技术整合起来了。在配置的第二部分,则定义了velocity的一些属性配置,包括定义前端显示页面的存放路径和页面的编码格式等。

此外,我们参考一下SpringMVC中解析jsp的视图解析器的配置,参考配置如下:

1 
2
3
4
5
6
SpringMVC默认的视图解析器ViewResolver

5. Velocity与WebX的整合

6. Velocity源码分析及性能优化

  

7. Velocity常用语法回顾

  http://www.cnblogs.com/yjmyzz/p/4146699.html

你可能感兴趣的文章
ActionResult,PartialViewResult,EmptyResult,ContentResult
查看>>
关于泛型类,泛型接口,泛型函数
查看>>
@pathvariable和@RequestParam的区别
查看>>
测试驱动开发
查看>>
C++操作符重载
查看>>
Redis实现分布式锁2
查看>>
【Udacity】线性回归方程 Regression
查看>>
前端架构设计1:代码核心
查看>>
RPC 框架通俗解释 转自知乎(洪春涛)
查看>>
获取cookie后,使用cookie进行接下来的自动化操作
查看>>
算法笔记--数论模板小集(待增)
查看>>
SASS初学者入门(转)
查看>>
pl/sql developer开发工具的beautifier美化插件
查看>>
C语言100个算法经典例题(七)
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
redux-form(V7.4.2)笔记(一)
查看>>