注:本站所有项目均使用maven构建!
创建maven项目,目录结构
pom.xml引用jar包
<!-- velocity --> <dependency> <groupId>com.e-rimming.third</groupId> <artifactId>velocity</artifactId> </dependency> <dependency> <groupId>com.e-rimming.third</groupId> <artifactId>velocity-tools</artifactId> </dependency> <!-- apache --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> <dependency> <groupId>commons-digester</groupId> <artifactId>commons-digester</artifactId> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </dependency>
注:此处引用的jar包比直接在application使用velocity多引用了servlet和common-digester的依赖!
web.xml增加servlet路径
<servlet> <servlet-name>VelocityServlet</servlet-name> <servlet-class>cn.ipwin.velocity02.Servlet</servlet-class> <!-- 加载自定义的velocity.propeties --> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/velocity.properties</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>VelocityServlet</servlet-name> <url-pattern>/velocity/demo</url-pattern> </servlet-mapping>
注:默认的velocity配置文件路径为WEB-INF下,若properties路径不在此位置,则需要在加载的时候进行设置,如上xml中init-param内容!
velocity.properties内容
# 加载方式为 webapp resource.loader = webapp # webapp方式加载处理类 webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader # 模板文件目录 webapp.resource.loader.path=/templates/ # 输入字符编码 input.encoding=UTF-8 # 输出字符编码 output.encoding=UTF-8
Servlet.java
package cn.ipwin.velocity02; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.velocity.Template; import org.apache.velocity.context.Context; import org.apache.velocity.tools.view.VelocityViewServlet; public class Servlet extends VelocityViewServlet { /** 序列化版本ID */ private static final long serialVersionUID = -7175173378476601595L; @Override protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) { // 准备测试数据 List<String> list = new ArrayList<String>(); list.add("List element 1"); list.add("List element 2"); list.add("List element 3"); list.add("List element 4"); ctx.put("list", list); return getTemplate("demo.vm"); } @Override protected void setContentType(HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html;charset=utf-8"); } }
demo.vm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Velocity DEMO</title> </head> <body> #set( $this = "Velocity") $this is so great!<br/> #foreach( $name in $list ) $name<br/> #end </body> </html>
运行结果如下:
Velocity is so great! List element 1 List element 2 List element 3 List element 4