Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1002578
  • 博文数量: 152
  • 博客积分: 4937
  • 博客等级: 上校
  • 技术积分: 1662
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-05 16:55
文章分类

全部博文(152)

文章存档

2013年(12)

2012年(6)

2011年(58)

2010年(43)

2009年(1)

2008年(15)

2007年(17)

我的朋友

分类: Java

2010-07-09 11:09:19

velocity模版制作工具使用经验(重点推荐模版路径指定问题) 收藏
 

velocity使用帮助
   velocity是一个很好的制作模版的工具,特别适合于网站生成大量的静态html页面,这样可以减少对于数据库访问造成的资源消耗。
   在这里不对velocity的使用作说明,这些在网上有很多资料,只想根据自己项目中遇到的问题作出一些记录,希望能给大家提供帮助:
   在velocity中需要使用到模版,模版的存放路径是通过配置文件*.properties来设置的;我们可以在这里使用绝对路径也可以使用
   相对路径,如我的项目中jsp页面放在d:/tomcat/webapps/BjLife下,模版放在d:/vm目录下,这样properties文件的模版路径
   部分可以这样写:
   file.resource.loader.description = Velocity File Resource Loader
   file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
   file.resource.loader.path = d:/vm 
   file.resource.loader.cache = false
   file.resource.loader.modificationCheckInterval = 2
  
   在相应的程序中你可以指定模版文件路径:
   完成jsp代码如下:
     <%@ page import="java.io.*" %>
  <%@ page import="java.io.StringWriter" %>
  <%@ page import="org.apache.velocity.app.VelocityEngine" %>
  <%@ page import="org.apache.velocity.app.Velocity" %>
  <%@ page import="org.apache.velocity.Template" %>
  <%@ page import="org.apache.velocity.VelocityContext" %>
  <%@ page import="com.bjlife.db.*"%>
  <%@ page import="com.bjlife.util.*"%>
  <%@ page import="java.sql.*"%>
  <%@ page import="java.net.*"%>
  <%@ page import="java.util.Properties"%>
<%
  //数据库连接
     Connection conTmp = null;
     Statement stmtTmp = null;
     ResultSet rstTmp = null;
     String filepath="d:\\";
     String vmpath=".";
            FileReader fr=null;    
     FileWriter fw=null;
            DBFactory dbFactory=new DBFactory();
     StringUtils sutils=new StringUtils();
 
 
  Properties p = new Properties();//通过Properties对象设置配置信息
  Template template = null;
  try{
    p.setProperty("file.resource.loader.path", "d:/vm");
    //设置velocity的输入输出编码转换
    p.setProperty("output.encoding", "gb2312");
    p.setProperty("input.encoding", "iso-8859-1");//输入的编码   
    Velocity.init( p );
    //取得模版文件
    template = Velocity.getTemplate("test.vm");
  
  }
  catch(Exception e)
  {
   System.out.println(e.toString());
  }
  try {
   conTmp  = dbFactory.getConnection();
          stmtTmp = conTmp.createStatement();           
   String Menusql="select * from test";  
   rstTmp  = stmtTmp.executeQuery(Menusql);
   while (rstTmp.next())
   {   
    VelocityContext context=new VelocityContext(); 
    String menutype=rstTmp.getString("menutype");   
    context.put("title",menutype);   
    String menuname=rstTmp.getString("menuname");           
    menuname = new String(menuname.getBytes("GBK"), "ISO-8859-1");   
    context.put("menuname",menuname);   
    String menuicon=rstTmp.getString("menuicon");   
    context.put("menuicon",menuicon);   
    StringWriter writer=new StringWriter();
    template.merge(context,writer);       
    fw=new FileWriter(filepath +rstTmp.getString("menu_dm")+".html");//建立FileWriter对象,并实例化fw
    fw.write(writer.toString());
    fw.close();  
   }
        }
        catch (SQLException exTmp) {
   exTmp.printStackTrace();
         System.out.println("数据插入数据库出现错误!");
    }
   finally{
         try {  stmtTmp.close();
      }
    catch (Exception e)
          {
         e.printStackTrace();
      System.out.println("数据插入数据库出现错误!");
   }
         try {  conTmp.close(); 
      }catch (Exception e)
    {
    e.printStackTrace();
             System.out.println("数据插入数据库出现错误!");
        }
   }
%>
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fogu77/archive/2004/12/10/212031.aspx
阅读(3711) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~