国产成人v爽在线免播放观看,日韩欧美色,久久99国产精品久久99软件,亚洲综合色网站,国产欧美日韩中文久久,色99在线,亚洲伦理一区二区

學(xué)習(xí)啦 > 知識(shí)大全 > 方法百科 > 產(chǎn)品使用方法 > velocity調(diào)用java方法

velocity調(diào)用java方法

時(shí)間: 陳哲凡673 分享

velocity調(diào)用java方法

  Velocity是一個(gè)基于java的模板引擎(template engine)。它允許任何人僅僅使用簡(jiǎn)單的模板語(yǔ)言(template language)來(lái)引用由java代碼定義的對(duì)象。下面由學(xué)習(xí)啦小編整理了幾種vlookup函數(shù)的使用方法,希望對(duì)大家有所幫助。

  velocity調(diào)用java方法一

  項(xiàng)目結(jié)構(gòu) velocity tool java類(lèi)

  public class T {

  public String msg() {

  return "難道必須沒(méi)有報(bào)名嘛 會(huì)瘋掉的!";

  }

  public String getMessage() {

  return "message";

  }

  public String sayHello(String s) {

  return "say hello by macro " + s;

  }

  }

  以上是類(lèi) 無(wú)包名

  以上是tools.xml文件內(nèi)容存放在web-inf下

  input.encoding=utf-8

  output.encoding=utf-8

  # Filepath for error template, relative to web application root directory

  tools.view.servlet.error.template = error.vm

  # Directory for layout templates, relative to web application root directory

  tools.view.servlet.layout.directory = /

  # Filepath of the default layout template

  # relative to the layout directory

  # NOT relative to the root directory of the webapp!

  tools.view.servlet.layout.default.template = default.vm

  以上是velocity.properties 存放與web-inf下

  velocity

  org.apache.velocity.tools.view.VelocityViewServlet

  org.apache.velocity.toolbox

  /WEB-INF/tools.xml

  org.apache.velocity.properties

  /WEB-INF/velocity.properties

  velocity

  *.vm

  index.vm

  以上是web.xml

  $screen_content

  呵呵的部分

  以上是default.vm

  #set($page_title="Layout Test")

  #set($layout="default.vm" )

  $t.getMessage()

  velocity調(diào)用java方法二

  1, 注釋?zhuān)魏我环N語(yǔ)言中,注釋總是必不可少的。

  (1) 單行注釋?zhuān)?/p>

  ## 這是單行注釋

  (2) 多行注釋?zhuān)?/p>

  #*

  這是多行注釋

  *#

  2, 輸出,也就是數(shù)據(jù)展現(xiàn)。

  $userName

  這樣便可以輸出用戶(hù)名了。但是,并不是絕對(duì)的能夠輸出用戶(hù)名,因?yàn)榭赡苓@里輸出的變量并不存在。如果userName這個(gè)變量不存在,或者為空,$userName將會(huì)被當(dāng)             作字符串直接輸出,也就是當(dāng)我們期望在userName為空的時(shí)候輸出空,但是卻輸出了’$userName’。為了避免這種情況,推薦這樣的變量輸出寫(xiě)法:

  $!{userName}

  3, 變量聲明與賦值

  一般情況下,我們不推薦在html頁(yè)面中直接聲明Velocity變量,因?yàn)檫@會(huì)增加html界面的復(fù)雜度。如果確實(shí)有必要,可以使用下面的語(yǔ)句聲明變量并賦值:

  #set($userName=’hanmeimei’)

  請(qǐng)注意:Velocity的變量聲明都要帶著$符號(hào)。

  在LML中,我們經(jīng)常在所謂的后臺(tái),也就是Action中給變量賦值,這樣在Action對(duì)應(yīng)的html模板中也可以直接使用該變量??墒褂靡幌聝煞N方法:

  (1) 傳統(tǒng)的getter/setter

  (2) ViewBag.Add(key,value)

  相比之下,第二種非傳統(tǒng)的方式更快速。

  4, 算術(shù)運(yùn)算

  Velocity支持在模板中使用(+,—,*,/),例如:

  #set($a=1)

  #set($b=1)

  #set($c=$a + $b)

  C在算對(duì)的情況下等于2,算錯(cuò)的情況下等于3.。有一個(gè)問(wèn)題大家需要注意,我在使用四則運(yùn)算的時(shí)候,發(fā)現(xiàn)’—‘不起作用,最后經(jīng)過(guò)嘗試,發(fā)現(xiàn)需要在變量和運(yùn)算符之    間留一個(gè)空格,這樣就沒(méi)問(wèn)題了。如果,你也遇到這樣的問(wèn)題,也可以這么嘗試一下。

  5, 邏輯運(yùn)算

  支持一下幾個(gè)運(yùn)算符,就如同java一樣:

  &&:與。

  ||:或。

  !:非。

  6, 迭代

  #foreach ($item in $list)

  這是第 $velocityCount 個(gè)元素: $item

  #end

  $velocityCount,表示當(dāng)前序號(hào)。

  還要說(shuō)一下我們?cè)贚ML中分頁(yè)顯示數(shù)據(jù)用到的迭代,如下:

  #foreach($item in $pager.result.rows)

  $item.userName

  ##以下兩種方式可迭代列

  #set($row=$item.values().toArray())

  ##方式1

  #foreach($a in $row) $!a #end

  ##方式2

  #foreach($i in [0..2]) $row.item($i) #end

  #end

  $pager.result是在分頁(yè)Action中查詢(xún)到的一個(gè)數(shù)據(jù)集Result。

  我們也可以在模板中直接聲明并賦值一個(gè)list,而后進(jìn)行迭代:

  #set( $list = ["a", "b", "c"])

  #foreach ($item in $list)

  $velocityCount

  #end

  還有一種情況,我們需要迭代從1到10,所有的整數(shù):

  #foreach ($item in [1..10])

  $velocityCount

  #end

  注意中間就是兩個(gè)點(diǎn)。

  查閱很多資料,都直接說(shuō)明Velocity不能迭代數(shù)組,下面說(shuō)明原因:

  對(duì)數(shù)組的訪(fǎng)問(wèn)在Velocity中存在問(wèn)題,因?yàn)閂elocity只能訪(fǎng)問(wèn)對(duì)象的方法,而數(shù)組又是一個(gè)特殊的Array,所以雖然數(shù)組可以進(jìn)行循環(huán)列舉,但卻不能定位訪(fǎng)問(wèn)特定位置 的   元素,如 strs[2],數(shù)組對(duì)固定位置元素的訪(fǎng)問(wèn)調(diào)用了Array的反射方法get(Object array, int index),而Velocity沒(méi)能提供這樣的訪(fǎng)問(wèn),所以數(shù)組要么改成List等其他類(lèi)容器的方式來(lái)包裝,要么就通過(guò)公用Util類(lèi)的方式來(lái)提供,傳入數(shù)組對(duì)象和要訪(fǎng)問(wèn)的位置參數(shù),從而達(dá)到返回所需值的目的。

  Velocity支持迭代的數(shù)據(jù)類(lèi)型有:Vector、Hashtable或者Array

  7, 條件判斷

  #if (條件1)

  #elseif (條件2)

  #else

  #end

  一直不是很理解Velocity的數(shù)據(jù)類(lèi)型,所以在項(xiàng)目中最多使用的是String,就像這里的條件表達(dá)式,我們經(jīng)常這樣寫(xiě): if(“$!{userSex}”==”0”),雖然性別使用int表示。

  8, 文件引入,#include與#parse

  兩者作用類(lèi)似,但是有以下不同:

  (1) 與#include不同的是,#parse只能指定單個(gè)對(duì)象。而#include可以有多個(gè)

  如果您需要引入多個(gè)文件,可以用逗號(hào)分隔就行:

  #include ("a.gif", "b.txt", "c.htm" )

  在括號(hào)內(nèi)可以是文件名,但是更多的時(shí)候是使用變量的:

  #include ( “a.txt”, $photo )

  (2) #include被引入文件的內(nèi)容將不會(huì)通過(guò)模板引擎解析;

  而#parse引入的文件內(nèi)容Velocity將解析其中的velocity語(yǔ)法并移交給模板,意思就是說(shuō)相當(dāng)與把引入的文件copy到文件中。

  以上兩點(diǎn)摘自互聯(lián)網(wǎng),到目前我基本沒(méi)有使用過(guò)#include。#parse最大的用處或許是這樣用:

  #parse(“title.html”)

  類(lèi)似layout。

  9, 內(nèi)置對(duì)象

  Velocity內(nèi)置了一些對(duì)象,在模版里可以直接調(diào)用,列舉如下:

  $request、$response、$session

  這些一直也沒(méi)使用過(guò),完全可以在Action頁(yè)面把各種對(duì)象處理好了。

  基本上,在我們的一般開(kāi)發(fā)中,掌握以上語(yǔ)法已經(jīng)可以應(yīng)付自如了。是不是很簡(jiǎn)單呢,我們希望的不就是簡(jiǎn)單嗎,簡(jiǎn)單所以快。寫(xiě)的不好,敬請(qǐng)見(jiàn)諒。

  補(bǔ)充:

  LML支持在html模板中直接調(diào)用java方法,并可以向方法傳遞參數(shù)(字面值,或者Velocity變量),還可以輸出方法的返回值。當(dāng)然,為了避免模板頁(yè)面過(guò)于復(fù)雜,我們還是應(yīng)該盡量減少在模板中調(diào)用java方法。如果確實(shí)有必要調(diào)用,則需要現(xiàn)在模板頁(yè)面對(duì)應(yīng)的Action類(lèi)上先行聲明:

  @Helper( { TestHelper.class })

  這樣就可以在html模板中調(diào)用:

  $!TestHelper.Test("$!{userName}")

  JAVA語(yǔ)言特點(diǎn)

  1.簡(jiǎn)單性

  Java看起來(lái)設(shè)計(jì)得很像C++,但是為了使語(yǔ)言小和容易熟悉,設(shè)計(jì)者們把C++語(yǔ)言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語(yǔ)句,代之以提供break和continue語(yǔ)句以及異常處理。Java還剔除了C++的操作符過(guò)載(overload)和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。因?yàn)镴ava沒(méi)有結(jié)構(gòu),數(shù)組和串都是對(duì)象,所以不需要指針。Java能夠自動(dòng)處理對(duì)象的引用和間接引用,實(shí)現(xiàn)自動(dòng)的無(wú)用單元收集,使用戶(hù)不必為存儲(chǔ)管理問(wèn)題煩惱,能更多的時(shí)間和精力花在研發(fā)上。

  2.面向?qū)ο?/p>

  Java是一個(gè)面向?qū)ο蟮恼Z(yǔ)言。對(duì)程序員來(lái)說(shuō),這意味著要注意應(yīng)中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method),而不是嚴(yán)格地用過(guò)程來(lái)思考。在一個(gè)面向?qū)ο蟮南到y(tǒng)中,類(lèi)(class)是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合。數(shù)據(jù)和方法一起描述對(duì)象(object)的狀態(tài)和行為。每一對(duì)象是其狀態(tài)和行為的封裝。類(lèi)是按一定體系和層次安排的,使得子類(lèi)可以從超類(lèi)繼承行為。在這個(gè)類(lèi)層次體系中有一個(gè)根類(lèi),它是具有一般行為的類(lèi)。Java程序是用類(lèi)來(lái)組織的。

  Java還包括一個(gè)類(lèi)的擴(kuò)展集合,分別組成各種程序包(Package),用戶(hù)可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶(hù)接口部件的類(lèi)(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫(xiě),處理輸入輸出的類(lèi)(java.io包)和支持網(wǎng)絡(luò)功能的類(lèi)(java.net包)。

  3.分布性

  Java設(shè)計(jì)成支持在網(wǎng)絡(luò)上應(yīng)用,它是分布式語(yǔ)言。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類(lèi)支持可靠的流(stream)網(wǎng)絡(luò)連接,所以用戶(hù)可以產(chǎn)生分布式的客戶(hù)機(jī)和服務(wù)器。

  網(wǎng)絡(luò)變成軟件應(yīng)用的分布運(yùn)載工具。Java程序只要編寫(xiě)一次,就可到處運(yùn)行。

  4.編譯和解釋性

  Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機(jī)器碼。Java字節(jié)碼提供對(duì)體系結(jié)構(gòu)中性的目標(biāo)文件格式,代碼設(shè)計(jì)成可有效地傳送程序到多個(gè)平臺(tái)。Java程序可以在任何實(shí)現(xiàn)了Java解釋程序和運(yùn)行系統(tǒng)(run-time system)的系統(tǒng)上運(yùn)行。

  在一個(gè)解釋性的環(huán)境中,程序開(kāi)發(fā)的標(biāo)準(zhǔn)“鏈接”階段大大消失了。如果說(shuō)Java還有一個(gè)鏈接階段,它只是把新類(lèi)裝進(jìn)環(huán)境的過(guò)程,它是增量式的、輕量級(jí)的過(guò)程。因此,Java支持快速原型和容易試驗(yàn),它將導(dǎo)致快速程序開(kāi)發(fā)。這是一個(gè)與傳統(tǒng)的、耗時(shí)的“編譯、鏈接和測(cè)試”形成鮮明對(duì)比的精巧的開(kāi)發(fā)過(guò)程。


猜你感興趣:

1.java培訓(xùn)心得體會(huì)

2.java程序員職業(yè)生涯規(guī)劃范本

3.java工程師自我介紹范文3篇

4.java程序員面試自我介紹技巧

374406