一、Velocity简介
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人 员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长 期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity现在应用非常广泛,以下将详细讲解SpringMVC项目与Velocity整合。
二、SpringMvc+Velocity整合
主要涉及以下文件
pom.xml(引入velocity的jar包)
spring-mvc.xml(视图配置,配置velocity)
velocity.properties(velocity配置文件)
1、引入jar包
引入相关依赖的jar包,主要包含 velocity-1.7.jar和velocity-tools-2.0.jar包
<!-- Velocity模板 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>velocity-tools</groupId> <artifactId>velocity-tools-generic</artifactId> <version>2.0</version> </dependency> |
2、 视图配置
<!-- 视图模式配置,velocity配置文件 --> <beanid="velocityConfig"class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <propertyname="resourceLoaderPath"value="/WEB-INF/vm"/> <propertyname="configLocation"value="classpath:velocity.properties"/> </bean> <!-- 配置后缀 --> <beanid="velocityViewResolver"class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <propertyname="contentType"value="text/html;charset=UTF-8"/> <propertyname="suffix"value=".vm"/> </bean> |
3、配置velocity.properties文件
#encoding input.encoding=UTF-8 output.encoding=UTF-8
#autoreload when vm changed file.resource.loader.cache=false file.resource.loader.modificationCheckInterval=2 velocimacro.library.autoreload=false |
4、编写velocity页面
配置完后,写一个vm页面展示key的页面myVelocity.vm,该页面的路径在:WEB-INF/vm下
<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>show all users</title> </head> <body> <table> $!{key} </table> </body> </html> |
5、编写控制层
起名为VelocityController.java
package com.xxx.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;
import com.alifi.uums.mv.JModelAndView;
@Controller @RequestMapping("/test/velocity") publicclass VelocityController {
@RequestMapping({"/myVelocity.do" }) public ModelAndView test(HttpServletRequest request) { ModelAndView mv =new JModelAndView("myVelocity", request, true); mv.addObject("key","我来了,velocity!"); return mv; } } |