天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JAVA velocity模板引擎使用實例

velocity使用1.7版本。 在win7下使用intelliJ IDEA建立一基于tomcat的web app項目,命名為todo_web,設置path為/todo,導入velocity相關(guān)jar包。只導入velocity-1.7.jar這個包可能會報錯,根據(jù)提示再導入velocity自帶的其他包。 項目結(jié)構(gòu)如下:



測試Tomcat

index.jsp內(nèi)容如下:
復制代碼 代碼如下:
<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="Java" %>
<html>
  <head>
    <title></title>
  </head>
  <body>
           <%
               out.print("hi,todo");
           %>
  </body>
</html>
HelloWorld.Java內(nèi)容如下:
復制代碼 代碼如下:
import Java.io.*;
import Javax.servlet.*;
import Javax.servlet.http.*;   
public class HelloWorld extends HttpServlet {
    /**
     *
     * @param request
     * @param response
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hi!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!!!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}
在web.xml中加入以下內(nèi)容:
復制代碼 代碼如下:
<servlet>
    <servlet-name>hi</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hi</servlet-name>
    <url-pattern>/hi</url-pattern>
</servlet-mapping>
運行項目,在http://localhost:8080/todo和http://localhost:8080/todo/hi中可以看到效果。


使用velocity

下面開始使用velocity模板引擎,在src下建立目錄templates,在templates目錄下建立文件test.vm,內(nèi)容如下:
復制代碼 代碼如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
#set( $this = "Velocity")
$this is great!  <br/>
$name  <br/>
hi  , i am letian
<h1>你好</h1>
</body>
</html>
在src目錄下新建Java文件MyVelocity01.Java
復制代碼 代碼如下:
import Java.io.*;
import Javax.servlet.*;
import Javax.servlet.http.*;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.VelocityContext;
import Java.util.Properties;
public class MyVelocity01 extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Properties properties=new Properties();
        properties.setProperty("resource.loader", "class");
        properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        //properties.setProperty("input.encoding", "UTF-8");
        //properties.setProperty("output.encoding", "UTF-8");
        properties.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
        properties.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
        properties.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
        VelocityEngine velocityEngine = new VelocityEngine(properties);
        VelocityContext context=new VelocityContext();
        context.put("name", "test");
        StringWriter sw = new StringWriter();
        velocityEngine.mergeTemplate("templates/test.vm", "utf-8", context, sw);
        //velocityEngine.mergeTemplate("templates/test.vm", "utf-8", context, sw);      //這樣就會出現(xiàn)兩次
        out.println(sw.toString());
    }
}

配置web.xml:
復制代碼 代碼如下:
<!--MyVelocity-->
<servlet>
    <servlet-name>ve</servlet-name>
    <servlet-class>MyVelocity01</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ve</servlet-name>
    <url-pattern>/ve</url-pattern>
</servlet-mapping>
重新部署,瀏覽器訪問http://localhost:8080/todo/ve可以看到效果。

簡單介紹velocity

velocity是一個基于Java的模板引擎,有三種文件加載模板方式: 1、從文件路徑加載 2、從類路徑(MyVelocity01.Java使用該方法) 3、從jar文件加載 開始接觸velocity時可能會在加載模板上遇到問題。

如何向模板文件傳遞變量: 模板本身可以定義變量,例如在test.vm中定義了變量$this,Java代碼也可以給模板傳遞變量,例如test.vm中的變量$name便是VelocityContext實例傳遞過去的。同時velocity也支持迭代對象,例如: 我們在MyVelocity01.Java中導入Java.util.Vector,將代碼:
復制代碼 代碼如下:
context.put("name", "test");
改為:
復制代碼 代碼如下:
Vector v = new Vector(); 
v.addElement("Harry"); 
v.addElement("John"); 
String[] names = {"Harry", "John"};
context.put("names1", v);
context.put("names2", names);
將test.vm內(nèi)容改為:
復制代碼 代碼如下:
<h1>hello</h1>
#foreach($name in $names1)
    $name   <br/>
#end
#foreach($name in $names2)
    $name   <br/>
#end
velocity還支持map容器,支持使用#include("")引入靜態(tài)模板,#parse("模板名")引入動態(tài)模板。

如果想不開要用Java MVC寫網(wǎng)站的話,使用servlet + velocity是一個小巧靈活的選擇。

jsp技術(shù)JAVA velocity模板引擎使用實例,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线 亚洲 日韩 欧洲视频 | 亚洲综合网国产精品一区 | 日日摸夜夜添无码AVA片 | 吃胸亲吻吃奶摸下面免费视频 | 欧美人成人亚洲专区中文字幕 | 欧美乱妇日本无乱码特黄大片 | 24小时日本在线观看片免费 | 99视频免视看 | 亚洲 欧美 国产在线视频 | 久久草福利自拍视频在线观看 | 高中生被C到爽哭视频免费 高挑人妻无奈张开腿 | 国产精品搬运 | 超清无码波多野吉衣与黑人 | 国产精品久久久久久久AV下载 | 中文在线免费看视频 | 亚洲成人免费在线 | 少妇无套内谢久久久久 | 成人影院午夜久久影院 | 欧美日韩中文国产一区 | 好看的电影网站亚洲一区 | 欧美GAY猛男GAYA片18禁 | 被老总按在办公桌吸奶头 | 中文字幕一区二区三区在线不卡 | 国产亚洲精品久久久久久久 | 亚洲国产在线视频精品 | 国产精品亚欧美一区二区三区 | 99久久免费看少妇高潮A片 | 久久精品一区二区免费看 | 久久综合久久鬼 | 久草在线福利资站免费视频 | 麻豆人妻无码性色AV | 精品无人区一区二区三区 | 国产大片51精品免费观看 | 国产福利视频在线观看福利 | 国产精品人妻无码99999 | 国产最猛性XXXX69交 | 国产精品久久人妻互换毛片 | 宝贝乖女好紧好深好爽老师 | 国产叼嘿久久精品久久 | 久久国产精品人妻中文 | 亚洲欧美日韩国产精品26u |