1. 程式人生 > >eclipse開發velocity例項(初學)

eclipse開發velocity例項(初學)

開發環境

Eclipse Java EE IDE for Web Developers.(Version: Helios Service Release 1)

        jdk1.6.0_07

        apache-tomcat-6.0.10

        首先需要為eclipse安裝velocity編輯外掛:

                在Eclipse的Help->Install New Software...

                點選“Add加 Veloeclipse,值:http://veloeclipse.googlecode.com/svn/trunk/update/

                備註:如果無法安裝,在安裝外掛的介面中把 Group Items by Catagory 前打鉤去掉

建立專案

        開啟eclipse,File -> New -> Other... -> Web -> Dynamic Web Projec  之後按照提示一路next;

        注意1:修改程式碼檔案輸出路徑,預設是build\classes;這個不符合tomcat的要求,需要改成WebContent\WEB-INF\classes 如下:

        

        注意2:勾選 Generate web.xml deployment descriptor

        

        新增velocity依賴包

                velocity相關的包有十多個,下載解壓後複製全部,貼上到專案WebContent -> WEB-INF ->lib資料夾中

                專案名右鍵選單選擇build path -> configure build path ->java build path ->libraries -> add jars 選擇專案lib資料夾,選擇全部jar最後點確認按鈕

        新增velocity模板檔案

                在WebContent下新增一個資料夾,我起名叫templates。在該檔案下新增一個hello.vm檔案,裡面內容如下:
                <html>
                        <head><title>Sample velocity page</title></head>
                        <body bgcolor="#ffffff">
<center>
<h2>Hello My First Velocity</h2>
<table width="100" cellpadding="5" cellspacing="1" bordercolor="#333333">
<tr><td bgcolor="#eeeeee" align="center">name list</td></tr>
#foreach ($name in $theList)
<tr><td bgcolor="#6666FF" align="center">$name</td></tr>
#end
</table>
</center>
                        </body>
                </html>

        新增java類檔案

                在Java Resource -> src下新建一個包,包名com.velocitydemo.velocityhandler,名稱隨意,後面配置檔案裡要用到,前後需要一致

                在該包下新增一個類,類名HelloHandler,名稱隨意,道理同上

                類的程式碼如下:

                package com.velocitydemo.velocityhandler;
                import java.util.Properties;
                import java.util.Vector;
                import javax.servlet.ServletException;
                import javax.servlet.http.HttpServletRequest;
                import javax.servlet.http.HttpServletResponse;
                import org.apache.velocity.Template;
                import org.apache.velocity.app.Velocity;
                import org.apache.velocity.app.VelocityEngine;
                import org.apache.velocity.context.Context;
                import org.apache.velocity.tools.view.VelocityViewServlet;
                public class HelloHandler extends VelocityViewServlet {
                        private static final long serialVersionUID = 1L;
                        private VelocityEngine velo;
                        public void init() throws ServletException {
                                velo = new VelocityEngine();// velocity引擎物件
                                Properties prop = new Properties();// 設定vm模板的裝載路徑
                                String path = this.getServletContext().getRealPath("/");
                                prop.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "templates/");
                                try {
                                        velo.init(prop);// 初始化設定,下面用到getTemplate("*.vm")輸出時;一定要呼叫velo物件去做,即velo.getTemplate("*.vm")
                                } catch (Exception e1) {
                                        e1.printStackTrace();
                                }
                        }
                        protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
                                String p1 = "Charles";
                                String p2 = "Michael";
                                Vector personList = new Vector();
                                personList.addElement(p1);
                                personList.addElement(p2);
                                ctx.put("theList", personList); // 將模板資料 list放置到上下文環境context中
                                Template template = velo.getTemplate("hello.vm");
                                return template;
                        }
                }               

        配置web.xml

                開啟WEB-INF下的web.xml檔案,內容如下:

                <?xml version="1.0" encoding="UTF-8"?>

                <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns="http://java.sun.com/xml/ns/javaee"
                                   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                                  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                                  id="WebApp_ID" version="3.0">

                        <display-name>velocity-demo</display-name>

                        <servlet>
                                <servlet-name>velocity</servlet-name>
                                <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
                        </servlet>
                        <servlet-mapping>
                                <servlet-name>velocity</servlet-name>
                                <url-pattern>*.vm</url-pattern>
                        </servlet-mapping>

                        <servlet>
                                <servlet-name>hello</servlet-name>
                                <servlet-class>com.velocitydemo.velocityhandler.HelloHandler</servlet-class>
                        </servlet>
                        <servlet-mapping>
                                <servlet-name>hello</servlet-name>
                                <url-pattern>/hello</url-pattern>
                        </servlet-mapping>

                        <welcome-file-list>
                                <welcome-file>/hello</welcome-file>
                        </welcome-file-list>

                </web-app>

        至此一個最簡單的velocity專案建立完畢

 注意:WEB-INF下的classes資料夾並不顯示在專案結構圖中

 

        釋出專案

 到這裡可以把專案資料夾中的WebContent釋出到Tomcat中進行測試了

        啟動tomcat訪問一個最簡單的velocity專案

 

                這個例項非常簡單,小弟也是剛剛接觸velocity,還請各位多指點,謝謝