`
woshixushigang
  • 浏览: 576167 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

velocity的web开发

 
阅读更多

此版本比较老,但是可以参考下。

  基于Velocity的应用程序现在很多企业都在使用,特别是做门户网站的系统。
对于Velocity的基础,可以参考之前的Velocity Step By Step,地址为http://www.suneca.com/article.asp?id=19
      velocity是一个核心工程,假如,你需要使用velocity去开企业应用,你需要下载velocity-tools工程,velocity-tools工程提供了Web应用的解决方案及Struts整合方案。下载可以到http://velocity.apache.org下载最新的velocity-tools工程。

现在,以一个读取用户信息为例,介绍如何去使用Velocity
第一步,安装
解压缩velocity-tools-1.3.zip,这个版本也是当前的最新版本。
在解压缩的目录里面,有一个叫sample.war的web应用程序,其实这个就是一个velocity应用的最简单模板。可以将sample.war文件copy到%TOMCAT_HOME%/webapps里面,启动tomcat,将会自动地解压缩sample.war;或使用winrar打开sample.war文件,进入WEB-INF/lib里面,将相应的jar文件copy到eclipse工程的WebRoot/WEB-INF/lib里面,eclipse会自动地将jar文件加到classpath当中。

第二步,配置web.xml
接下来,需要配置web.xml,配置velocity的Servlet,以便对支持vm后缀的url,配置如下:

 程序代码
<?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>
        <servlet-name>velocity</servlet-name>
        <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>

        <init-param>
            <param-name>org.apache.velocity.toolbox</param-name>
            <param-value>/WEB-INF/toolbox.xml</param-value>
        </init-param>

        <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>velocity</servlet-name>
        <url-pattern>*.vm</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>



第三,创建toolbox.xml,velocity.properties
在WebRoot/WEB-INF/下面新建一个toolbox.xml文件,该文件是velocity的工具箱,管理着所有的业务层实现,或者将这引起理解为模型。
在WebRoot/WEB-INF/下面新建一个velocit.properties文件,该文件用以定义velocity的一些必要参数,假如没有配置这个文件,系统将默认使用ISO-8859-1的编码形式,中文将会乱码。在velocity.properties配置文件当中,添加两行配置信息,配置信息如下:
input.encoding=GBK
output.encoding=GBK

第四步,创建数据库
启动Mysql,新建一个新的数据库,创建数据库的代码如下:
创建数据库:create database velocity;
使用velocity数据库:use velocity;
创建表:

程序代码 程序代码
Create TABLE T_USER(
    ID INT NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(20) NOT NULL,
    LOGINID VARCHAR(20) NOT NULL,
    AGE  INT NOT NULL,
    PRIMARY KEY(ID)
);



初始化数据:

程序代码 程序代码
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('周杰伦','joe',28);
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('罗志祥','lzx',26);
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('陈奕迅','cyx',32);
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('梁静茹','ljr',30);
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('容祖儿','rze',29);
Insert INTO T_USER (NAME,LOGINID,AGE) VALUES('王力宏','wlh',31);



第五步,建立数据源:

程序代码 程序代码
<Context>
  <Resource name="jdbc/velocity" auth="Container" type="javax.sql.DataSource"
               maxActive="10" maxIdle="5" maxWait="5000" logAbandoned="true"
               username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/velocity?characterEncoding=GBK&useUnicode=true&autoReconnect=true"/>

</Context>



关于数据源的配置可以参考一下同一个类别下的Tomcat数据源配置:http://www.suneca.com/article.asp?id=20

第六步,编写使用数据源的数据库连接通用类
ConnectionUtils.java

程序代码 程序代码
package zizz;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
*
* 数据库连接的通用函数.
* @author ZIZZ.
* @version Create Date: 2007-12-29 下午04:51:15.
*/

public class ConnectionUtils {
    
    /**
     * 从数据源当中获取一个数据库连接.
     * @return
     */

    public static Connection getConnection(){
        Connection result = null;
        try {
            Context context = new InitialContext();
            DataSource dataSource = (DataSource)context.lookup("java:/comp/env/jdbc/velocity");
            result = dataSource.getConnection();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }
    
}



第七步,编写表T_USER的操作对象
UserManager.java

程序代码 程序代码
package zizz;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
*
* 该类是用户表的管理对象,提供对T_User表的所有操作.
* @author ZIZZ.
* @version Create Date: 2007-12-29 下午04:53:37.
*/

public class UserManager {
    
    /**
     * 列出所有用户.
     * @return
     * @throws SQLException
     */

    public List listAllUsers() throws SQLException{
        List<User> result = new ArrayList<User>();
        Connection conn = ConnectionUtils.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rs= stmt.executeQuery("select * from t_user");
        while(rs.next()){
            User user = new User();
            user.setId(rs.getInt("ID"));
            user.setName(rs.getString("NAME"));
            user.setLoginId(rs.getString("LOGINID"));
            user.setAge(rs.getInt("AGE"));
            result.add(user);
        }
        //以下这种写法不太规则,因为假如rs关闭报错的时候,conn将没有被关闭.只是为了方便
        rs.close();
        stmt.close();
        conn.close();
        return result;
    }
    
}



User.java

程序代码 程序代码
package zizz;

/**
* 用户对象,对应着数据库表T_User
* Class Comment
* @author 陈毓哲.Suneca-Developer-Group.
* @version Create Date: 2007-12-29 下午04:42:10.
*/

public class User {
    
    private int id;
    
    private String name;
    
    private String loginId;
    
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLoginId() {
        return loginId;
    }

    public void setLoginId(String loginId) {
        this.loginId = loginId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}



第八步,配置toolbox.xml文件
在toolbox.xml文件当中做了如下定义:

 程序代码
<?xml version="1.0" encoding="GBK"?>
<toolbox>
  <data type="string">
     <key>userlist_title</key>
     <value>用户列表</value>
  </data>

  <tool>
     <key>userManager</key>
     <scope>request</scope>
     <request-path>/userList/*</request-path>
     <class>zizz.UserManager</class>
  </tool>  
</toolbox>



在配置文件当中,
key表示vm引用的对象名称,该名称必须是唯一的
scope表示对象的生命周期,其可以设置的值为:request,session,application
request-path假如scope设置为request,该对象是为那一个servlet使用的,request-path的命名最后需要加上/*,这是必须的
class表示对应的实现类

第九步,定义userList.vm文件
在WebRoot下,创建一个新的userList.vm模板文件,该文件来以读取数据库,显示数据,该文件内容如下:

 程序代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>$userlist_title</title>
</head>
<body>
    <table width="50%" bgcolor="#C0F6EE">
        <tr bgcolor="#FFFFFF">
            <th>编号</th>
            <th>姓名</th>
            <th>登录号</th>
            <th>年龄</th>            
        </tr>
        #foreach($user in ${userManager.listAllUsers()})      
        <tr bgcolor="#FFFFFF">
            <td align="center">${user.getId()}</td>
            <td align="center">${user.getName()}</td>
            <td align="center">${user.getLoginId()}</td>
            <td align="center">${user.getAge()}</td>
        </tr>
        #end        
    </table>
</body>
</html>



该模板文件使用了循环foreach,是不是看起来很眼熟?

分享到:
评论

相关推荐

    velocity web开发

    【标题】:“Velocity Web开发” 在Web开发领域,Velocity是一个非常重要的模板引擎,它被广泛应用于生成动态网页内容。Velocity由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。其设计目标是提供一...

    Velocity Web应用开发

    ### Velocity Web应用开发知识点详解 #### 一、Velocity概述及应用场景 Velocity 是一款基于 Java 的模板引擎,主要用于生成动态内容,特别是在 Web 开发领域。它能够帮助开发者快速地构建出可读性强、易于维护的 ...

    Java Web项目开发案例精粹--Velocity简单实例

    在Java Web开发中,Velocity是一个非常流行的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,使得开发者可以专注于后端逻辑,而设计师则可以自由地设计用户界面。Velocity提供了一种简洁、高效的模板语言,...

    《Velocity Web应用开发指南中文版》.doc

    ### Velocity Web应用开发指南知识点详解 #### 一、Velocity简介及优势 **Velocity** 是一款高性能的模板引擎,常用于Web应用开发中生成HTML页面,同时也支持其他类型的文本输出,如XML、PDF等。它的主要优势包括...

    VelocityWeb应用开发指南中文版

    VelocityWeb应用开发指南中文版

    Velocity学习Web项目

    Struts是一个用于构建MVC(Model-View-Controller)架构的Java库,它简化了Web应用程序的开发,特别是处理用户请求和业务逻辑的交互。在Struts 1.x版本中,视图通常由JSP页面来实现,但也可以使用Velocity模板来替代...

    velocity 中文开发文档

    - **应用场景**:除了在 Web 开发中使用外,Velocity 还可以用于生成 SQL 和 PostScript、XML 文件等。此外,还可以用作独立工具生成源代码或报告,或是作为其他系统的一个组成部分。 #### 二、Velocity 的核心价值...

    《Velocity java开发指南》中文版

    总的来说,《Velocity Java开发指南》中文版提供了详尽的指导,帮助读者理解和掌握如何利用Velocity模板引擎高效地处理文本数据,创建动态内容,以及将其应用于实际的Java项目中,无论是独立应用还是Web服务。...

    Velocity+Spring 2[1].0+Hibernate的Web应用开发框架

    ### Velocity+Spring 2.0+Hibernate 的 Web 应用开发框架 #### 一、引言 随着互联网技术的发展,Web 应用系统的复杂度不断提高,为了更好地组织和管理应用程序,MVC(Model-View-Controller)架构逐渐成为主流。在...

    velocity Java开发指南中文版

    这使得 Velocity 成为了 Web 应用程序和通用 Java 应用程序中一个非常有用的工具。 #### 二、开始入门 - **Getting Started**: 这部分主要介绍了如何开始使用 Velocity。包括安装 Velocity 的步骤以及如何设置开发...

    Velocity用户手册(中文)

    总之,Velocity作为一款强大的模板引擎,对于Web开发中的前后端分离有着重要作用,它的简单性和灵活性使得开发者和设计师都能高效地完成各自的工作。如果你在Web开发中追求更好的用户体验和更高的开发效率,那么学习...

    Tomcat 与Java web开发技术详解(孙卫琴)

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解 孙卫琴 源码

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    velocity经典4pdf中文教程

    3. **《Velocity Web应用开发指南中文版》**:本书专为Web开发人员设计,详细阐述了如何将Velocity集成到Servlet容器中,如Tomcat,以及如何与Spring、Struts等Web框架协同工作。它还探讨了模板的组织结构、如何处理...

    Velocity java开发指南

    ### Velocity Java 开发指南知识点详解 #### 一、Velocity简介 **Velocity** 是一款基于 Java 的模板引擎,它能够高效地将数据模型与界面展示分离,使得开发人员能够轻松地生成动态网页或者其他任何形式的文本输出...

    velocity文档(Velocity1.4java开发指南中文版,Velocity1.4模板使用指南中文版中文版)

    ** Velocity 概述** Velocity 是一个开源的 Java 模板引擎,它允许开发者...通过上述步骤,你将能够熟练地使用 Velocity 1.4 进行 Java Web 开发,将动态数据无缝地融合到静态页面中,提升项目的开发效率和用户体验。

    velocity-web.zip

    在Java Web开发中, Velocity作为一个模板语言,其主要作用是将静态页面模板与动态数据结合起来,生成最终的HTML输出。它通过简单的语法,如#set、#if、#foreach等,使得非程序员(如网页设计师)也能理解和修改模板...

    Velocity-API.chm--采用官方文档制作-超值的Velocity API参考文档。

    当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java...

Global site tag (gtag.js) - Google Analytics