OGNL是Object-Graph(圖) Navigation(導(dǎo)航) Language的縮寫,它是一種功能強(qiáng)大的表達(dá)式語言(Expression Language,簡(jiǎn)稱為EL),通過它簡(jiǎn)單一致的表達(dá)式語法,可以存取對(duì)象的任意屬性,調(diào)用對(duì)象的方法,遍歷整個(gè)對(duì)象的結(jié)構(gòu)圖,實(shí)現(xiàn)字段類型轉(zhuǎn)化等功能。它使用相同的表達(dá)式去存取對(duì)象的屬性。
WebOGNL是一種構(gòu)建以servlet為基礎(chǔ)的組件化應(yīng)用的web表現(xiàn)層框架,它的模板語言建立在OGNL表達(dá)式的基礎(chǔ)上,具有別的web層框架不能匹敵的適應(yīng)性。
OGNL可以讓我們用非常簡(jiǎn)單的表達(dá)式訪問對(duì)象層,例如,當(dāng)前環(huán)境的根對(duì)象為user1,則表達(dá)式person.address[0].province
可以訪問到user1的person屬性的第一個(gè)address的province屬性。
這種功能是模板語言的一個(gè)重要補(bǔ)充,象jsp2.0,velocity,jelly等等,都有類似的功能,但是ognl比它們完善得多,而且以一個(gè)獨(dú)立的lib出現(xiàn),方便我們構(gòu)建自己的框架。
webwork2和現(xiàn)在的Struts2.x中使用OGNL取代原來的EL來做界面數(shù)據(jù)綁定,所謂界面數(shù)據(jù)綁定,也就是把界面元素(例如一個(gè)textfield,hidden)和對(duì)象層某個(gè)類的某個(gè)屬性綁定在一起,修改和顯示自動(dòng)同步。
和struts1.x的formbean相比,這樣做的好處非常明顯:在webwork中不需要為每個(gè)頁面專門寫formbean,可以直接利用對(duì)象層的對(duì)象。例如在對(duì)象設(shè)計(jì)中,我們的User和Person是分開的,而一個(gè)注冊(cè)用戶界面需要填寫兩者的內(nèi)容,在webwork中,就可以保持后臺(tái)的對(duì)象結(jié)構(gòu),把屬于用戶屬性的界面元素用user.person.xxx綁定,把屬于賬號(hào)屬性的界面元素用user.xxx綁定。
WebOGNL是一種構(gòu)建以servlet為基礎(chǔ)的組件化應(yīng)用的web表現(xiàn)層框架,它的模板語言建立在OGNL表達(dá)式的基礎(chǔ)上,具有別的web層框架不能匹敵的適應(yīng)性。
OGNL可以讓我們用非常簡(jiǎn)單的表達(dá)式訪問對(duì)象層,例如,當(dāng)前環(huán)境的根對(duì)象為user1,則表達(dá)式person.address[0].province
可以訪問到user1的person屬性的第一個(gè)address的province屬性。
這種功能是模板語言的一個(gè)重要補(bǔ)充,象jsp2.0,velocity,jelly等等,都有類似的功能,但是ognl比它們完善得多,而且以一個(gè)獨(dú)立的lib出現(xiàn),方便我們構(gòu)建自己的框架。
webwork2和現(xiàn)在的Struts2.x中使用OGNL取代原來的EL來做界面數(shù)據(jù)綁定,所謂界面數(shù)據(jù)綁定,也就是把界面元素(例如一個(gè)textfield,hidden)和對(duì)象層某個(gè)類的某個(gè)屬性綁定在一起,修改和顯示自動(dòng)同步。
和struts1.x的formbean相比,這樣做的好處非常明顯:在webwork中不需要為每個(gè)頁面專門寫formbean,可以直接利用對(duì)象層的對(duì)象。例如在對(duì)象設(shè)計(jì)中,我們的User和Person是分開的,而一個(gè)注冊(cè)用戶界面需要填寫兩者的內(nèi)容,在webwork中,就可以保持后臺(tái)的對(duì)象結(jié)構(gòu),把屬于用戶屬性的界面元素用user.person.xxx綁定,把屬于賬號(hào)屬性的界面元素用user.xxx綁定。