更新時間:2022-12-28 來源:黑馬程序員 瀏覽量:
OGNL的全稱是Object-Graph Navigation Language,即對象圖導(dǎo)航語言,它是一種功能強大的開源表達(dá)式語言。使用這種表達(dá)式語言可以通過某種表達(dá)式語法存取Java對象的任意屬性,調(diào)用Java對象的方法,以及實現(xiàn)類型轉(zhuǎn)行等。
了解OGNL的概念后,下面講解一下OGNL的組成。OGNL的操作實際上是圍繞OGNL結(jié)構(gòu)的三個要素進行的,分別是表達(dá)式(expression)、上下文對象(context)和根對象(root)。這三個要素的具體說明如下。
表達(dá)式是整個OGNL的核心,OGNL會根據(jù)表達(dá)式到對象中取值。所有OGNL操作都是針對表達(dá)式解析后進行的,它表明了此次OGNL操作要“做什么”。實際上,表達(dá)式就是一個帶有語法含義的字符串,這個字符串規(guī)定了操作的類型和操作的內(nèi)容。
上下文對象規(guī)定了OGNL操作“在哪里進行”。context對象是一個Map類型的對象,在表達(dá)式中訪問context中的對象,需要使用#號加對象名稱,即“#對象名稱”的形式。例如要獲取context對象中user對象的username值,可以如下書寫:
#user.username
根對象可以理解為OGNL的操作對象,OGNL可以對根對象進行取值或?qū)懼档炔僮?,表達(dá)式規(guī)定了“做什么”,而根對象則規(guī)定了“對誰操作”。實際上根對象所在的環(huán)境就是OGNL的上下文對象環(huán)境。