velocity的web开发

编程入门 行业动态 更新时间:2024-10-10 04:22:39

<a href=https://www.elefans.com/category/jswz/34/1720637.html style=velocity的web开发"/>

velocity的web开发

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

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

现在,以一个读取用户信息为例,介绍如何去使用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 = ""
    xmlns:xsi = ""
    xsi:schemaLocation = "
    http: / /java.sun /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数据源配置:.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" ".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开发

本文发布于:2024-02-05 16:38:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745515.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:velocity   web

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!