`
javaocean
  • 浏览: 63822 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

velocity 简单实例

阅读更多

这个模板工具确实挺好,写一个入门例子,供想学velocity的同行们参考,有问题的话给我留言:-)

(1)首先是模板(本质就是一个html)

hello.vm

<html>
    <body >       
        #foreach($business in $list)
        $business
        #end
    </body>
</html>

(2)web.xml里面的velocity配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.urz.test.TestServlet</servlet-class>

   <!--属性文件的路径-->
    <init-param>
      <param-name>org.apache.velocity.properties</param-name>
      <param-value>/WEB-INF/velocity.properties</param-value>
    </init-param>

  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>
  <servlet>

 <!-这里是log4j的配置->
  <servlet-name>InitLog4j</servlet-name>
  <servlet-class>com.urz.test.InitLog4j</servlet-class>
 <init-param>
  <param-name>log4j</param-name>
  <param-value>WEB-INF/log4j.properties</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  </servlet>
 <servlet-mapping>
  <servlet-name>InitLog4j</servlet-name>
  <url-pattern>/InitLog4j</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>hello.vm</welcome-file>
  </welcome-file-list>
</web-app>

(3)velocity.properties

           #模板的根目录

           file.resource.loader.path = template
           # 日志文件路径
           runtime.log = log/velocity.log

 

(4)最主要的来了TestServlet.java

 

package com.urz.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.servlet.VelocityServlet;
/**
 * 继承类
 *
 * @author machao
 * @version 0.1 Oct 22, 2008 10:17:51 PM
 */
@SuppressWarnings("deprecation")
public class TestServlet extends VelocityServlet
{
 //版本
 private static final long serialVersionUID = 1L;
 //log4j调试
 private Logger log=Logger.getLogger(TestServlet.class);

 protected Properties loadConfiguration(ServletConfig config) throws IOException, FileNotFoundException
 {
  //得到属性文件,找到后要加载
  String propsFile = config.getInitParameter(INIT_PROPS_KEY);
  Properties prop = new Properties();
  if (propsFile != null)
  {
   String realPath = getServletContext().getRealPath(propsFile);
   if (realPath != null)
   {
    propsFile = realPath;
   }
   prop.load(new FileInputStream(propsFile));
  }
  //这里是日志的配置
  String log = prop.getProperty(Velocity.RUNTIME_LOG);
  if (log != null)
  {
   log = getServletContext().getRealPath(log);
   if (log != null)
   {
    prop.setProperty(Velocity.RUNTIME_LOG, log);
   }
  }
  // 设置模板文件的位置
  String path = prop.getProperty(Velocity.FILE_RESOURCE_LOADER_PATH);
  if (path != null)
  {
   path = getServletContext().getRealPath(path);
   if (path != null)
   {
    prop.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
   }
  }
  return prop;
 }
    /**
     * 就像servlet一样,很好理解吧
     * 覆盖方法
     * @param request
     * @param response
     * @param ctx
     * @return
     */
 public Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx)
 {
  //模板数据,测试使用
  String para1="hello";
  String para2="machao";
  String para3="tianzone software";
  List<String> list=new ArrayList<String>();
  list.add(para1);
  list.add(para2);
  list.add(para3);
  
  // 数据 list添加到上下文环境 context 中去,它将在模板页面上显示
  //list应和模板上的一样
  ctx.put("list",list);
  
  //得到模板对象,注意异常情况
  
  Template template = null;
  try
  {
   //加载模板文件,注意路径喔:-)
   template = getTemplate("hello.vm");
  }
  catch (ParseErrorException e1)
  {
   log.debug("Error:parse  " + e1);
  }
  catch (ResourceNotFoundException e2)
  {
   log.debug("the template not found" + e2);
  }
  catch (Exception e3)
  {
   log.debug("Error " + e3);
  }
  return template;
 }
}

 

好了,到此,你是不是感觉到velocity很简单呢:-)

部署好你的项目,开始测试吧,欢迎你进入velocity的大门!

我给一个我写的小例子,下面有项目结构

部署到你的服务器后,访问路径:http://localhost:8080/TestV/TestServlet

 

 

  • 大小: 21.6 KB
  • 大小: 15.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics