1. 程式人生 > >OGNL(Object Graph Navigation Language)物件圖導航語言

OGNL(Object Graph Navigation Language)物件圖導航語言

1.1 OGNL的全稱是Object Graph Navigation Language(物件圖導航語言),它是一種強大的表示式語言
1.2 OgnlContext(ongl上下文)其實就是Map (教室、老師、學生)

  OgnlContext=根物件(1)+非根物件(N)
  非根物件要通過"#key"訪問,根物件可以省略"#key"

  注1:context:英文原意上下文,環境/容器  

1.3 把根物件和非根物件說出來

1.3 把根物件和非根物件說出來

重點:
1、一個上下文中只有一個根物件
2、取根物件的值,只需要直接通過根物件屬性即可
3、非根物件取值必須通過指定的上下文容器中的#key.屬性去取。

1、ActionContext一次請求建立一次
2、值棧取值從上往下,取到為止,如果已經拿到,不再往下找。


ognl是一種思想			ognlContext
struts使用了這種思想	actionContext
  1. ValueStack
    2.1 值棧
    先進後出的資料結構,彈夾 push/pop
    2.2 為什麼要使用ValueStack作為根物件
    放到值棧中的物件都可視為根物件

從小到大
page -> request -> session -> application

從上至下找值
A
B
C
D

//虛擬碼
*.action
3. ActionContext
3.1 ActionContext ac = ActionContext.getContext();//保證同一請求中只建立一個上下文
request
session
application
parameters
ValueStack(root)

3.2 向ValueStack壓棧
push(XxxAction)//helloAction
push(ModelDirver.getModel())//model不為null user

3.3 Map<String,String[]> map = request.getParamterMap(); 壓action程式碼詳解
//引數名==OGNL表示式
{“userName”:“aaa”,“uname”:“bbb”,“upwd”:“ccc”,“age”:“22”}

  setValue("userName", ac, vs, "aaa");
  setValue("uname", ac, vs, "bbb");
  setValue("upwd", ac, vs, "ccc");
  setValue("age", ac, vs, "22");
  1. struts2中傳遞資料
    可以使用作用域,但更多的是利用ValueStack或ActionContext

相關推薦

OGNLObject Graph Navigation Language物件導航語言

1.1 OGNL的全稱是Object Graph Navigation Language(物件圖導航語言),它是一種強大的表示式語言 1.2 OgnlContext(ongl上下文)其實就是Map (教室、老師、學生) OgnlContext=根物件(1)+

OGNL——物件導航語言,強大的表示式語言

OGNL 1.1 OGNL的全稱是Object Graph Navigation Language(物件圖導航語言),它是一種強大的表示式語言 1.2 OgnlContext(ongl上下文)其實就是Map (教室、老師、學生) OgnlContext=根物件(1)+非根物件(N)

第八天:物件導航語言

1、Strust 取值                            EL 取值 #attr.age                                                                                   

6.1 物件的構造和析構Object Costruction and Destruction

一般而言,constructor和destructor的安插如你所預期那樣: //C++ pseudo { Point point; //point.Point::Point(); 一般會被安插在這裡 ... //point.Point::~Point(); 一般會被安插在這裡 }

Java How to Program習題_第九章_面向物件程式設計之繼承Object-Oriented Programming: Inheritance

這章的題目是目前為止所有章節中最簡單的! Self-Review Exercises 9.1 Fill in the blanks in each of the following statements: a) Inheritance is a form of so

HTML Hyper Text Markup Language 常用標簽

htm pla 行為 段落 中文 裏的 預格 border 表示 HTML是什麽? 英文全稱:Hyper Text Markup Language 中文全稱:超文本標記語言 網頁主要由 機構 表現 行為 組成 什麽是標簽? < > 裏的叫標簽 標

Hibernate查詢HQL——Hibernate Query Language

增加 exceptio 連接查詢 有一個 子句 內容 ike 例子 範圍 HQL查詢   HQL提供了是十分強大的功能,它是針對持久化對象,用取得對象,而不進行update,delete和insert等操作。而且HQL是面向對象的,具備繼承,多態和關聯等特性。 from子句

UML-物件

前言 物件圖也是靜態圖的一種,但是物件圖描述一個系統在某個時刻 的靜態結構,顯示的是物件與物件之間的關係,而類圖描述所有可能的 情況。 用途 1.捕獲例項和連線 2.在分析和設計階段建立 3.捕獲互動的靜態結構 4.舉例說明資料(物件)的結構 5.詳細描述瞬

android之Intent複雜資料的傳遞一Object型別的資料

使用Serializable方式   前提:Object需要實現Serializable介面 Serializable方式傳遞Object的語法:bundle.putSerializable(key,object); 用Serializable方式接收Object的語法:o

項目實戰一響應式導航

源碼 資訊 AC 大屏幕 targe eight data- container 首頁 源碼如下: <%-- Created by IntelliJ IDEA. User: shyroke Date: 2018/6/13 0013 Time: 1

OGNL的全稱是對象導航語言

字符串 表達 struts sco avi 路徑 expr object ESS OGNL的全稱是對象圖導航語言( object-graph Navigation Language),它是一種功能強大的開源表達式語言,使用這種表達式語言,可以通過某種表達式語法,存取Java

物件池模式Object Pool Pattern

定義 物件池模式,或者稱為物件池服務,通過迴圈使用物件,減少資源在初始化和釋放時的昂貴損耗。 注意:這裡的“昂貴”可能是時間效益(如效能),也可能是空間效益(如並行處理),在大多的情況下,“昂貴”指效能。 簡單的說,在需要時,從池中提取;不用時,放回池中,等待下一個請求。典型例子是連線池

別讓Java物件逃逸Object Escape

翻譯:吳嘉俊,叩丁狼高階講師    關於逃逸分析 我在開源專案Speedment的開發過程中,我和專案的貢獻者都意識到我們的程式碼不僅要良好並易懂,同時還要有較高的效能,否則他們很容易轉向使用其他的解決方案。 逃逸分析(Escape Analysis)允許我們在寫

如何對Python的類物件進行序列化處理Object of type 'BookCollection' is not JSON serializable

  Python內建的json模組提供了非常完善的Python物件到JSON格式的轉換。 json.dumps()         將Python中的物件轉換為JSON中的字串物件json.loads()   &

物件檢測object detection演算法圖解

摘要: 本文簡要介紹影象檢測中常用的深度學習方法——RCNN家族系列演算法,以影象講解形式,便於理解。        在生活中,經常會遇到這樣的一種情況,上班要出門的時候,突然找不到一件東西了,比如鑰匙、手機或者手錶等。這個時候一般在房間翻一遍各個角落來尋找

物件屬性的點表示法和方括號表示法的總結object[i]

物件屬性的點表示法和方括號表示法的總結(object[i]) 寫專案時遇到的坑,自己來填,共大家參考: var person = { name:'dell' } 習慣上,呼叫物件的屬性,我們一般使用 person.name ,但其實也可以使用person[‘name’]

5.4 物件的效能Object Efficiency

以下的效率測試中,物件構造和拷貝所需的成本是以Point3d class宣告為基礎,從簡單形式逐漸到複雜形式,包括Plain OI' Data、抽象資料型別(ADT)、單一繼承、多重繼承、虛擬繼承。以下是測試的主角: Point3d lots_of_copies(Point3d a,Point3

5.3 物件複製語意學Object Copy Semantics

當我們設計一個class,並以一個class object賦值給另一個class object時,我們就用到了拷貝複製操作,我們可以選擇預設的淺拷貝,也可以自己提供一個explicit copy assignment operator,或者顯示的拒絕把一個class object賦值給另一個clas

物件儲存Object-based Storage概述

什麼是物件儲存?多次在不同場合被問起這個問題,於是就想寫篇小綜述文章。網上查詢資料時,找到幾篇不錯的資料,簡單整理一下,供自己和大家參考。 什麼是物件儲存(OSD)? 儲存區域網(SAN)和網路附加儲存(NAS)是目前兩種主流網路儲存架構,而物件儲存(Object-based Storage)是一種新的網路

JS 物件Object和字串String互轉

利用原生JSON物件,將物件轉為字串 [javascript] view plaincopy var jsObj = {};   jsObj.testArray = [1,2,3,4,5];   jsObj.name = 'CSS3';   jsObj.