




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.OGNL達(dá)式語言O(shè)GN 是 ObjectGraphicNavigationLanguage(對(duì)象圖導(dǎo)航語言)的縮寫,它是一個(gè)開源項(xiàng)目。Struts2 框架使用 OGN 蚱為默認(rèn)的表達(dá)式語言。相對(duì) EL 表達(dá)式,它提供了平時(shí)我們需要的一些功能,如:支持對(duì)象方法調(diào)用,如 xxx.sayHello();支持類靜態(tài)方法調(diào)用和值訪問,表達(dá)式的格式為類全名(包才 S 包路徑)方法名|值名,例如:java.lang.Stringformat(foo%s,bar)或cn.itcast.ConstantAPP_NAME 操作集合對(duì)象。一Ognl 有一個(gè)上下文(Context)概念,說白了上下文就是一個(gè) MA
2、P 吉構(gòu),它實(shí)現(xiàn)了java.utils.Map 接口,在 Struts2 中上下文(Context)的實(shí)現(xiàn)為 ActionContext,下面是上下文(Context)的結(jié)構(gòu)示意圖2 .訪問上下文(Context)中的對(duì)象需要使用#符號(hào)標(biāo)注命名空間,如#application、#session另外 OGN 會(huì)設(shè)定一個(gè)根對(duì)象(root 對(duì)象),在 Struts2 中根對(duì)象就是 ValueStack(值棧)。如果要訪問根對(duì)象(即 ValueStack)中對(duì)象的屬性,則可以省略#命名空間,直接訪問該對(duì)象的屬性即可。在 struts2 中,根對(duì)象 ValueStack 的實(shí)現(xiàn)類為 OgnlValueS
3、tack,該對(duì)象不是我們想像的只存放單個(gè)值,而是存放一組對(duì)象。在 OgnlValueStack 類里有一個(gè) List 類型的 root 變量,就是使用他存放一組對(duì)象|-request|-applicationcontext|-OgnlValueStackroot 變量action,OgnlUtil,.|-session|-attr|-parameters在 root 變量中處于第一位的對(duì)象叫棧頂對(duì)象。通常我們?cè)?OGNLS 達(dá)式里直接寫上屬性的名稱即可訪問 root 變量里對(duì)象的屬性,搜索順序是從棧頂對(duì)象開始尋找,如果棧頂對(duì)象不存在該屬性,就會(huì)從第二個(gè)對(duì)象尋找,如果沒有找到就從第三個(gè)對(duì)象尋找,
4、依次往下訪問,直到找到為止。大家注意:Struts2 中,OGNLS 達(dá)式需要配合 Struts 標(biāo)簽才可以使用。如:3 .由于 ValueStack(值棧)是 Struts2 中 OGNL 勺根對(duì)象,如果用戶需要訪問值棧中的對(duì)象,在 JSP 頁面可以直接通過下面的 EL 表達(dá)式訪問 ValueStack(值棧)中對(duì)象的屬性:$foo/獲得值棧中某個(gè)對(duì)象的 foo 屬性如果訪問其他 Context 中的對(duì)象, 由于他們不是根對(duì)象, 所以在訪問時(shí), 需要添加#前綴。application 對(duì)象:用于訪問 ServletContext,例如#application.userName 或#appli
5、cationuserName,相當(dāng)于調(diào)用 ServletContext 的getAttribute(username)。session 對(duì)象:用來訪問 HttpSession,例如#session.userName 或者#sessionuserName,相當(dāng)于調(diào)用 session.getAttribute(userName)。request 對(duì)象:用來訪問 HttpServletRequest 屬性(attribute)的 Map 例如#request.userName 或者#requestuserName,相當(dāng)于調(diào)用request.getAttribute(userName)。paramet
6、ers 對(duì)象:用于訪問 HTTP 勺請(qǐng)求參數(shù),例如#parameters.userName 或者#parametersuserName,相當(dāng)于調(diào)用 request.getParameter(username)。attr 對(duì)象:用于按 page-request-session-application 順序訪問其屬性。4 .為何使用 EL 表達(dá)式能夠訪問 valueStack 中對(duì)象的屬性原因是 Struts2 對(duì) HttpServletRequest 作了進(jìn)一步的封裝。簡(jiǎn)略代碼如下:publicclassStrutsRequestWrapperextendsHttpServletRequestW
7、rapperpublicStrutsRequestWrapper(HttpServletRequestreq)super(req);publicObjectgetAttribute(Strings)ActionContextctx=ActionContext.getContext();Objectattribute=super.getAttribute(s);/先從 request 范圍獲取屬性值if(ctx!=null)if(attribute=null)/如果從 request 范圍沒有找到屬性值,即從ValueStack 中查找對(duì)象的屬性值ValueStackstack=ctx.getV
8、alueStack();attribute=stack.findValue(s);returnattribute;5 .采用 OGNLg 達(dá)式創(chuàng)建 List/Map 集合對(duì)象如果需要一個(gè)集合元素的時(shí)候(例如 List對(duì)象或者 Map 對(duì)象),可以使用 OGNL 中同集合相關(guān)的表達(dá)式。使用如下代碼直接生成一個(gè) List 對(duì)象:生成一個(gè) Map 對(duì)象:=Set 標(biāo)簽用于將某個(gè)值放入指定范圍。scope:指定變量被放置的范圍,該屬性可以接受 application、sessionrequest、page 或 action。如果沒有設(shè)置該屬性,則默認(rèn)放置在 OGNlContext中。value:賦給變
9、量的值.如果沒有設(shè)置該屬性,則將 ValueStack 棧頂?shù)闹蒂x給變量。6 .采用 OGNLS 達(dá)式判斷對(duì)象是否存在于集合中對(duì)于集合類型,OGN 表達(dá)式可以使用 in 和 notin 兩個(gè)元素符號(hào)。其中,in 表達(dá)式用來判斷某個(gè)元素是否在指定的集合對(duì)象中;notin 判斷某個(gè)元素是否不在指定的集合對(duì)象中,如下所示。in 表達(dá)式:在不在notin 表達(dá)式:不在在7.OGNL達(dá)式的投影功能除了 in 和 notin 之外,OGN 還允許使用某個(gè)規(guī)則獲得集合對(duì)象的子集,常用的有以下 3 個(gè)相關(guān)操作符。?:獲得所有符合邏輯的元素。A:獲得符合邏輯的第一個(gè)元素。$:獲得符合邏輯的最后一個(gè)元素。例如代碼
10、:35-$在上面代碼中,直接在集合后緊跟.運(yùn)算符表明用于取出該集合的子集,內(nèi)的表達(dá)式用于獲取符合條件的元素,this 指的是為了從大集合 books 篩選數(shù)據(jù)到小集合,需要對(duì)大集合 books 進(jìn)行迭代,this 代表當(dāng)前迭代的元素。本例的表達(dá)式用于獲取集合中價(jià)格大于 35 的書集合。publicclassBookActionextendsActionSupportprivateListbooks;OverridepublicStringexecute()books=newLinkedList();books.add(newBook(A735619678,spring,67);books.ad
11、d(newBook(B435555322,ejb3.0,15);8 .property 標(biāo)簽property 標(biāo)簽用于輸出指定值:default:可選屬性,如果需要輸出的屬性值為 null,則顯示該屬性指定的值escape:可選屬性,指定是否格式化 HTML 弋碼。value:可選屬性, 指定需要輸出的屬性值, 如果沒有指定該屬性, 則默認(rèn)輸出 ValueStack棧頂?shù)闹?。id:可選屬性,指定該元素的標(biāo)識(shí)9 .iterator 標(biāo)簽iterator 標(biāo)簽用于對(duì)集合進(jìn)行迭代,這里的集合包含 List、Set 和數(shù)組。fontcolor=redbluevalue:可選屬性,指定被迭代的集合,如果
12、沒有設(shè)置該屬性,則使用 ValueStack 棧頂?shù)募?。id:可選屬性,指定集合里元素的 id。status:可選屬性,該屬性指定迭代時(shí)的 IteratorStatus 實(shí)例。該實(shí)例包含如下幾個(gè)方法:intgetCount()intgetIndex()booleanisEven()booleanisOdd()booleanisFirst()booleanisLast()返回當(dāng)前迭代了幾個(gè)元素返回當(dāng)前迭代元素的索引,返回當(dāng)前被迭代元素的索引是否是偶數(shù),返回當(dāng)前被迭代元素的索引是否是奇數(shù),返回當(dāng)前被迭代元素是否是第一個(gè)元素。,返回當(dāng)前被迭代元素是否是最后一個(gè)元素。10.if/elseif/els
13、e 標(biāo)簽2321都不等10.url 標(biāo)簽生成類似如下路徑:/struts/test/helloworld_add.action?personid=23紅色部分為內(nèi)容路徑。一當(dāng)標(biāo)簽的屬性值作為字符串類型處理時(shí),“%符號(hào)的用途是計(jì)算的值。輸出結(jié)果:#myurlhttp:/OGN 威達(dá)式11.表單標(biāo)簽_checkboxlist 復(fù)選框如果集合為 list生成如下 html 代碼:Java.NetRoRPHP如果集合為 MAP生成如下 html 代碼:瑜珈用品戶外用品球類自行車12 .表單標(biāo)簽_checkboxlist 復(fù)選框如果集合里存放的是 javabean%Personperson1=newPerson(1,第一個(gè));Personperson2=newPerson(2,第二個(gè));Listlist=newArrayList();list.add(person1);list.add(person2);request.setAttribute(persons,list);%Personid 和 namePerson 的屬性生成如下 html 代碼:第一個(gè)第二個(gè)13 .表單標(biāo)簽_ra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車安全檢驗(yàn)政策解讀
- 地下水水文地質(zhì)工程地質(zhì)研究重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 連片土地轉(zhuǎn)租合同協(xié)議
- 車輛購買贈(zèng)送協(xié)議書范本
- 運(yùn)輸木架租借合同協(xié)議
- 員工試用期勞動(dòng)合同協(xié)議書
- 產(chǎn)業(yè)園區(qū)租賃經(jīng)營協(xié)議書
- 投資咨詢服務(wù)合同協(xié)議
- 舊房改造協(xié)議書
- 旅游酒店連鎖管理服務(wù)合同
- 《工程力學(xué)》課件-08 軸向拉(壓)桿的軸力分析計(jì)算并繪制軸力圖
- 中考?xì)v史《中國近代史》復(fù)習(xí)課件
- 24春國家開放大學(xué)《農(nóng)業(yè)推廣》調(diào)查報(bào)告參考答案
- 慈善行業(yè)案例用慈善法分析
- 能源統(tǒng)計(jì)制度培訓(xùn)課件
- 汾酒集團(tuán)招聘真題
- ERCP圍術(shù)期麻醉安全管理
- 系統(tǒng)性硬化癥性肺病變的護(hù)理查房
- 石家莊市2024年高中學(xué)校畢業(yè)年級(jí)教學(xué)質(zhì)量檢測(cè)(一)一模英語試卷(含答案)
- 市教育局印鑒使用流程圖
- 2024年山西大地環(huán)境投資控股有限公司招聘筆試參考題庫含答案解析
評(píng)論
0/150
提交評(píng)論