Struts2 (三)OGLN
01.OGNL 的歷史
OGNL 最初是為了能夠使用對象的屬性名來建立 UI 組件 (component) 和 控制器 (controllers) 之間的聯系,簡單來說就是:視圖 與 控制器 之間數據的聯系。后來為了應付更加復雜的數據關系,Drew Davidson 發明了一個被他稱為 KVCL(Key-Value Coding Language) 的語言。 Luke 參與進來后,用 ANTLR 來實現了該語言,并給它取了這個新名字,他后來又使用 JavaCC 重新實現了該語言。目前 OGNL 由 Drew 來負責維護。目前很多項目中都用到了 OGNL,其中不乏為大家所熟知的,例如幾個流行的 web 應用框架:WebWork,Tapestry 等。
02.什么是OGNL
OGNL:Object Graph Navigation Language? 對象導航圖語言
開源項目,取代頁面中Java腳本,簡化數據訪問
和EL同屬于表達式語言,但功能更為強大
讓我們通過簡單一致的表達式語法來讀取和設置Java對象的屬性值,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉換等功能。
03.OGNL在Struts 2中的作用
表達式語言
將表單或Struts 2標簽與特定的Java數據綁定起來,用來將數據移入、移出框架
類型轉換
數據進入和流出框架,在頁面數據的字符串類型和Java數據類型之間進行轉換
?
03.值棧與OGNL
值棧(ValueStack)
由Struts 2框架創建的存儲區域,具有棧的特點
Action的實例會被存放到值棧中
OGNL訪問值棧
?
按照從上到下的順序,靠近棧頂的同名屬性會被讀取
04.為什么進行類型轉換
在基于HTTP協議的Web應用中
客戶端請求的所有內容都以文本編碼方式傳輸到服務器端,服務器端的編程語言卻有著豐富的數據類型
Servlet中,類型轉換工作由開發者自己完成
?
?action
?
?struts.xml
?jsp
?
轉載于:https://www.cnblogs.com/1612ss/p/8472938.html
總結
以上是生活随笔為你收集整理的Struts2 (三)OGLN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第 21 章 —— 单例模式
- 下一篇: CAS SSO 单点登录 实例