Java web 學(xué)習(xí)—struts2高級技術(shù)

OGNL表達(dá)式

? ? ? ?自動導(dǎo)航對象的結(jié)構(gòu)并訪問和設(shè)置對象數(shù)據(jù)连舍,核心對象是ognl上下文(一個Map容器)索赏,可以存放多的對象

特點:

1.支持對象方法的調(diào)用

2.支持靜態(tài)方法的調(diào)用

3.支持變量的賦值

4.可以操作集合數(shù)據(jù)

Struts框架中的OGNL

? ? ?struts2中ognl作用與struts2中的ActionContext参滴。

? ? ? 接收一個action請求時會創(chuàng)建ActionContext對象并實例化

獲取值棧對象:${user.name}

獲取application:#application.name或#application.['name'] ? ?:相當(dāng)于調(diào)用application.getAttribute("name");

獲取request:#request.name或#request.['name']

獲取session:#session.name或#session.['name']

獲取parameters:#parameters.name或#parameters.['name']

獲取attr:不指定范圍時按page, request, session, application 次序搜索:#attr.name或#attr.['name']

? ? ? ? ?在使用Struts2標(biāo)簽時需要引用Struts2的標(biāo)簽庫砾赔,在jsp頭部通過<%@ taglib prefix="s" uri="/struts-tags"%>

訪問靜態(tài)方法與屬性

調(diào)用Bean.NAME靜態(tài)屬性 ?: @com.lyq.bean.Bean@NAME

調(diào)用靜態(tài)方法: ? ? ? ? ? ?@com.lyq.bean.Bean@greeting()

默認(rèn)情況下struts2不允許ognl 調(diào)用靜態(tài)方法。需要在struts.xml中更該:<constant name="struts.ognl,allowStaticMethodAccess" value="true">

訪問List杂拨,Set,Map集合

List集合:list[0]\

Set集合:無序集合不能通過下標(biāo)值方式訪問

Map集合:map.key或map.['key'] ? ? ? ? ? ? 訪問所有的key:map.keys

判斷元素是否為空:collection.isEmpty() ? ? ? ? ? collection.size

投影和選擇

投影:獲取集合中某列的所有數(shù)據(jù) ? ? 值棧中: list.{數(shù)據(jù)} ? ? 非值棧:#list.name

選擇:獲取集合中滿足條件的選擇操作:值棧:list.{?#this.age>10} ? 非值棧:#list.{?#this.age>10}\

?:獲取滿足指定條件的所有元素

^:獲取滿足指定條件的第一個元素

$:獲取指定條件的最后一個元素

Struts2標(biāo)簽庫

1.數(shù)據(jù)標(biāo)簽

1.property:獲取數(shù)據(jù)值并將數(shù)據(jù)直接輸出到頁面中

2.set:定義百年靈并賦值及設(shè)置變量的作用域

scrope:設(shè)置變量作用域(application,request,session,page,action(默認(rèn)))

value:變量的值

var:變量名稱

<s:set var="username" value="測試set標(biāo)簽" scrope="request”></s:set>

<s:property default="沒有數(shù)據(jù)" value="#request.username"/>

3.a:構(gòu)建超鏈接

4.param:對參數(shù)賦值

5.action:執(zhí)行action請求并選擇返回結(jié)果輸出到當(dāng)前jsp頁面中

6.push:將對象或值壓到值棧中并放置到頂部 ? ? ?<s:push value="#request.student"/>

7.date:格式化日期時間

8.include:包含一個頁面:<%@ include file="一個jsp頁面或者servlet"%>

9.url標(biāo)簽:

2.控制標(biāo)簽

1.if:<s:if> ? ? <s:elseif> ? ? ? <s:else>

2.iterator:用于迭代數(shù)據(jù) ? begin:起始位置 ? ?end結(jié)束位置 ? status迭代狀態(tài) ? step每次迭代增加量 ?value:集合或數(shù)組對象 ? var迭代元素變量策橘,指定后迭代的變量將壓入到值棧中

元素數(shù):st.count ? ?是否為第一個元素 ? st.first ? ?是否為最后一個元素: st.last ?當(dāng)前索引值:st.index ?索引值是否為偶數(shù):st.even ?索引值是否為奇數(shù):st.odd

攔截器

? ? ? ?攔截器可以動態(tài)增強action對象的功能,動態(tài)的作用于Action和Result之間蚌堵,動態(tài)的為action和result添加新功能

攔截器對Action對象進(jìn)行攔截操作的順序圖:

使用攔截器

直接使用AbstractInterceptor對象實現(xiàn)Interceptory接口?

數(shù)據(jù)驗證機(jī)制

手動驗證:ActionSupport對Validateable接口進(jìn)行了實現(xiàn),但對validate()方法是一個空實現(xiàn)泻蚊,通過validate()方法驗證數(shù)據(jù)有效性時直接重寫validate()

驗證文件命名規(guī)則:名稱必須是ActoinName-validation.xml或ActionName-AliasName-validation.xml? ? ? ? ? ? ActoinName 是Action對象的名稱? ? ? ? ? ? AliasNameAction配置的名稱

以ActoinName-validation.xml命名數(shù)據(jù)的驗證會作用到整個Action對象中孽糖,并驗證Action對象的請求業(yè)務(wù)處理方法,適用于action對象處理方法單一或驗證處理規(guī)則相同\

以ActionName-AliasName-validation.xml命名適用于多個請求處理方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尘奏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炫加,更是在濱河造成了極大的恐慌瑰煎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俗孝,死亡現(xiàn)場離奇詭異酒甸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赋铝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門插勤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人革骨,你說我怎么就攤上這事农尖。” “怎么了良哲?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵盛卡,是天一觀的道長滑沧。 經(jīng)常有香客問我,道長殖属,這世上最難降的妖魔是什么外潜? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哆致,結(jié)果婚禮上踪蹬,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好灵临,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般蒲障。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天毅否,我揣著相機(jī)與錄音刀闷,去河邊找鬼徐许。 笑死缸沃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剧腻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤前计,失蹤者是張志新(化名)和其女友劉穎伶棒,沒想到半個月后骇钦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年积糯,在試婚紗的時候發(fā)現(xiàn)自己被綠了吃嘿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艾蓝。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芯侥,靈堂內(nèi)的尸體忽然破棺而出汹忠,到底是詐尸還是另有隱情雹熬,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布僧界,位于F島的核電站捂襟,受9級特大地震影響宠漩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜魁索,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陆赋,春花似錦沐祷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灾锯,卻和暖如春兢榨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顺饮。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工吵聪, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兼雄。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓吟逝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親君旦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品嘲碱,是在 struts1和WebWork的...
    inke閱讀 2,255評論 0 50
  • 標(biāo)簽 如果要配置的標(biāo)簽金砍,那么必須要先配置標(biāo)簽,代表的包的概念麦锯。 包含的屬性 name包的名稱恕稠,要求是唯一的,管理a...
    偷偷得路過閱讀 1,344評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法扶欣,類相關(guān)的語法鹅巍,內(nèi)部類的語法千扶,繼承相關(guān)的語法,異常的語法骆捧,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 非本人總結(jié)的筆記澎羞,抄點筆記復(fù)習(xí)復(fù)習(xí)。感謝傳智博客和黑馬程序猿記筆記啊記筆記 Ognl的簡介 Ognl是獨立的項目敛苇,...
    鍵盤瞎閱讀 521評論 0 2
  • 很難有失落的情緒妆绞,但它確實存在,存于每個人的身體里枫攀,趁你不注意時爬出來括饶,像藤蔓一樣將整個人裹起來,然而這藤蔓沒有綠...
    付西閱讀 115評論 0 0