下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Struts2內(nèi)容提要Struts2提供的表達(dá)式語言支持OGNL使用OGNL的語法特征值棧對象概述介紹Struts2UI表單非表單非UI控制數(shù)據(jù)庫Struts2支持的表達(dá)語言Struts
2支持以下幾種表達(dá)式語言:OGNL(Object-GraphNavigationLanguage),可以方便地操作對象屬性的開源表達(dá)式語言(默認(rèn)支持);JSTL(JSP
Standard
Tag
Library),JSP
2.0集成的標(biāo)準(zhǔn)的表達(dá)式語言;Groovy,基于Java平臺的動態(tài)語言,它具有時下比較流行的動態(tài)語言(如Python、Ruby和Smarttalk等)的一些起特性;Velocity,嚴(yán)格來說不是表達(dá)式語言,它是一種基于Java的模板匹配引擎;Struts
2默認(rèn)的表達(dá)式語言是OGNL,原因是它相對其它表達(dá)式語言具有下面幾大優(yōu)勢:支持對象方法調(diào)用,如xxx.doSomeSpecial();支持類靜態(tài)的方法調(diào)用和值 ,表達(dá)式的格式為@[類全名(包括包路徑)]@[方法名
|
值名],例如:@java.lang.String@format('foo%s','bar')或@tutorial.MyConstant@APP_NAME;支持賦值操作和表達(dá)式串聯(lián),如price=100,discount=0.8,calculatePrice(),這個表達(dá)式會返回80;OGNL上下文(OGNL
context)和ActionContext;操作集合對象。OGNL在Struts2中的圖示application(用于
application屬性)相當(dāng)于調(diào)用了ServletContext的getAttribute()方法session(用于
session屬性)相當(dāng)于調(diào)用了HttpSession對象的getAttribute()方法request(用于 請求屬性)ActionContext(ONGLConext)相當(dāng)于調(diào)用了HttpServletRequest對象的getAttribute()方法attr(如果PageContext可用,則
PageContext)否則依次搜索request、session和application對象parameters(用于 請求參數(shù))相當(dāng)于調(diào)用了HttpServletRequest對象的getParameter()方法ValueStack(值棧對象,被設(shè)為OGNL的根,可以直接
)Action的實例 于棧頂,所以Action的全部屬性可直接OGNL表達(dá)式語言值棧中的對由于ValueStack(值棧)是Struts
2中OGNL的根對象,如果用戶需要象,則可以直接通過下面的代碼
ValueStack(值棧)中的屬性:${foo}//獲得值棧中的foo屬性如果
其他Context中的對象,由于不是根對象,在 時,需要加#前綴。application對象:用于
ServletContext,例如#application.userName或者#application['userName'],相當(dāng)于調(diào)用Servlet的getAttribute("username")。session對象:用來
HttpSession,例如#session.userName或者#session['userName'],相當(dāng)于調(diào)用session.getAttribute("userName")。request對象:用來
HttpServletRequest屬性(attribute)的Map,例如#request.userName或者#request['userName'],相當(dāng)于調(diào)用request.getAttribute("userName")。parameters對象:用于
HTTP的請求參數(shù),例如#parameters.userName或者#parameters['userName'],相當(dāng)于調(diào)用request.getParameter("username")。attr對象:用于按>request->session->application順序 其屬性。OGNL的一些常用符號$:用于在Struts.xml中
OGNL中的值#:用于在OGNL取ActionContext中除ValueStack之外的值%:用于將字符串轉(zhuǎn)成OGNL表達(dá)式(javascript
eval){}:在OGNL表達(dá)式中,用于描述一個集合#{}:在OGNL表達(dá)式中,用于描述一個Map非根對象取值示例application對象session對象request對象attr對象parameter對象值棧的使用Struts2中值棧對象是OGNL的根,不需使用
“#”Action對象被自動加入值棧中根對象不需加任何特殊符號即可<s:textfield
name="userName"
label="uerName"
/><s:textfieldname="age"
label="age"
/>獲取Struts2的植棧對象值棧對象的方式(一):設(shè)定值vs.set(“user1”,new
User(“zhangsan”,20));JSP中獲取值:<s:property
value=“"/><br>方式(二):設(shè)定值vs.push(new
User("zhangsan",20));vs.push(new
User("lisi",30));JSP中獲取值:<s:property
value=“name"/><br>:<s:property
value=“[index].name"/><br>OGNL的使用OGNL
成員屬性和成員方法OGNL訪用靜態(tài)屬性和靜態(tài)方法//調(diào)用靜態(tài)方法必須加入這個屬性,才能夠調(diào)用到靜態(tài)方法。<constantname="struts.ognl.allowStaticMethodAccess"value="true"></constant>Request.getParameter的值作用域中的值集合中的值A(chǔ)ctionContex與ValueStack中的值EL表達(dá)式EL表達(dá)式可以EL表達(dá)式可以ValueStack中的內(nèi)容
ActionContext中的內(nèi)容OGNL其它操作_1如果需要一個集合元素的時候(例如List對象或者M(jìn)ap對象),可以使用OGNL中同集合相關(guān)的表達(dá)式。使用如下代碼直接生成一個List對象:<s:set
name="list"
value="{'zhangming','xiaoi','liming'}"
/><s:iterator
value="#list"
id="n"><s:property
value="n"/><br></s:iterator>生成一個Map對象:<s:set
name="foobar"
value="#{'foo1':'bar1',
'foo2':'bar2'}"
/><s:iterator
value="#foobar"
id="n"
status="st"><s:property
value="key"/>=<s:property
value="value"/><br></s:iterator>Set
用于將某個值放入指定范圍。scope:指定變量被放置的范圍,該屬性可以接受application、session、request、page或action。如果沒有設(shè)置該屬性,則默認(rèn)放置在OGNL
Context中。
value:賦給變量的值.如果沒有設(shè)置該屬性,則將ValueStack棧項的值賦給變量。OGNL其它操作_2對于集合類型,OGNL表達(dá)式可以使用in和not
in兩個元素符號。其中,in表達(dá)式用來判斷某個元素是否在指定的集合對象中;not
in判斷某個元素是否不在指定的集合對象中,如下所示。in表達(dá)式:<s:if
test="'foo'
in
{'foo','bar'}">在</s:if><s:else>不在</s:else>not
in表達(dá)式:<s:if
test="'foo'
not
in
{'foo','bar'}">不在</s:if><s:else>在</s:else>OGNL其它操作_3除了in和not
in之外,OGNL還允許使用某個規(guī)則獲得集合對象的子集,常用的有以下3個相關(guān)操作符。?:獲得所有符合邏輯的元素。^:獲得符合邏輯的第一個元素。$:獲得符合邏輯的最后一個元素。例如代碼:<s:iterator
value="books.{?#this.price
>
35}"><s:property
value="title"
/>
-
$<s:property
value="price"
/><br></s:iterator>在上面代碼中,直接在集合后緊跟.{}運算符表明用于取出該集合的子集,{}內(nèi)的表達(dá)式用于獲取符合條件的元素,本例的表達(dá)式用于獲取集合中價格大于35的書集合。public
class
BookAction
extends
ActionSupport
{priva ist<Book>
books;@Overridepublic
String
execute()
{books
=
new
LinkedList<Book>();books.add(new
Book("A735619678",
"spring",
67));books.add(new
Book("B435555322",
"ejb3.0",
45));}}OGNL的其他操作方式“%”符號的用途是在標(biāo)志的屬性為字符串類型時,計算OGNL表達(dá)式的值
<s:set
var="url"value="#{'163':'com'}"/>','sina':'.url:<s:url
value="#url['163']"/><br>url:<s:url
value="%{#url['163']}"/>Struts分類:傳智播客教育propertyproperty
用于輸出指定值:<s:setname="name"
value="'kk'"
/><s:property
value="#name"/>default:可選屬性,如果需要輸出的屬性值為null,則顯示該屬性指定的值
escape:可選屬性,指定是否格式化HTML代碼。
value:可選屬性,指定需要輸出的屬性值,如果沒有指定該屬性,則默認(rèn)輸出ValueStack棧頂?shù)闹?。id:可選屬性,指定該元素的標(biāo)識非UI
—控制if-elseif-else
用于判斷控制append用于將多個集合組合為一個集合對象generator
將一個字符串生成一個集合iterator
迭代對象merge
與append功能相同,但新集合元素排列方式不同sort
用于集合對象的排序subset
取集合的子集if-elseif-elseiteratormerge
與appends:generator、subset
與sort非UI
—數(shù)據(jù),輸出context的內(nèi)容action
調(diào)用actionbean
用于創(chuàng)建JavaBean實例date格式化日期debug生成調(diào)試的超i18n調(diào)用資源文件push把值壓入VS棧頂set設(shè)置一個變量text用于顯示資源文件中的文本url生成一個URL地址property直接輸出action中的屬性值include包含其他的JSP頁面param為其他
提供參數(shù)示例UI
—表單表單通用屬性表單元素的name與value屬性name相對于Action的實例屬性value獲取該屬性的值Struts2中只要指定name屬性就可以表單元素介紹值表單通用屬性—模板相關(guān)的屬性templateDir
:指定表單所用的模板文件theme:
指定表單所用的
;template:指定表單所用的模板;;表單通用屬性—JS相關(guān)的屬性生成的表單元素上單擊時觸發(fā)javaScript函數(shù);生成的表單元素上雙擊時觸發(fā)javaScript函數(shù);生成的表單元素上按下時時觸發(fā)javaScript函數(shù);生成的表單元素上松開時觸發(fā)javaScript函數(shù);生成的表單元素上懸停時觸發(fā)javaScript函數(shù);生成的表單元素時觸發(fā)javaScript函數(shù);生成的表單元素得到焦點時觸發(fā)的t函數(shù);生成的表單元素失去焦點時觸發(fā)的函數(shù);onclick:指定鼠標(biāo)在該ondbclick:指定鼠標(biāo)在該onmousedown:指定鼠標(biāo)在該onmouseup:指定鼠標(biāo)在該onmouseover:指定鼠標(biāo)在該onmouseout:指定鼠標(biāo)移除該onfocus:指定鼠標(biāo)在該onblur:指定鼠標(biāo)在該onkeypress:指定單擊鍵盤上某個鍵時觸發(fā)函數(shù);onkeyup:指定松開鍵盤上某個鍵時觸發(fā)函數(shù);onkeydown:指定按下鍵盤上某個鍵時觸發(fā)函數(shù);onselect:對下拉列表項等可以選擇表單元素,指定選中元素時觸發(fā)javaScript函數(shù);onchange:對于文本框等可以接受輸入表單元素。指定當(dāng)改變時觸發(fā)javaScript函數(shù);表單通用屬性—樣式相關(guān)的屬性cssClass(simple/String)
定義html
class
屬性cssStyle (simple/String)定義html
style
屬性title
(simple/String)
定義html
title
屬性disabled
(simple/String)
定義html
disabled
屬性name
(simple/String)
表單元素的nametabIndex
(simple/String)
定義html
tabindex
屬性value
(simple/Object)
定義表單元素的valuelabel (xhtml/String)
定義表單元素的labellabelPosition (xhtml/String)
定義表單元素的label位置(top/left),缺省為leftrequiredposition (xhtml/String)
定義required
標(biāo)識相對label元素的位置(left/right),缺省是rightrequired (xhtml/Boolean)
在label中添加*(true增加,否則不增加)常用表單元素head用于生成頁面特定的CSS與JScheckboxList一次創(chuàng)建多個復(fù)選框radio生成一個單選按鈕,屬性同上comboBox生成單個文本框與下拉列表框doubleselect生成一個級聯(lián)下拉列表框Optiontransferselect用于生成兩個下拉列表框,并可相互轉(zhuǎn)移值select用于生成一個下拉列表框updownselect用于生成一個選項可移動的下拉列表框optgroup選項組token防止表單重復(fù)提交常用表單元素—示例UI
—非表單actionerror:如果Action實例的
getActi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年行政文職崗位聘用協(xié)議范本
- 2024年限供應(yīng)商戰(zhàn)略合作協(xié)議
- 2024年度商品交易居間服務(wù)協(xié)議
- 2024知識產(chǎn)權(quán)交易協(xié)議模板
- 2024年專項品牌副食銷售代理協(xié)議
- 2024年專業(yè)講座施工建設(shè)協(xié)議模板
- 2024年度專業(yè)安保勞務(wù)派遣協(xié)議樣本
- 2024幼教人員勞動協(xié)議樣本
- 安裝項目承攬協(xié)議范本2024年
- 2024年企業(yè)間合作聯(lián)營協(xié)議
- JT-T-1045-2016道路運輸企業(yè)車輛技術(shù)管理規(guī)范
- 2024年大學(xué)試題(體育科學(xué))-體育市場營銷學(xué)筆試考試歷年高頻考點試題摘選含答案
- 國開(甘肅)2024年春《地域文化(專)》形考任務(wù)1-4終考答案
- 部編《函數(shù)的單調(diào)性》說課稿課件
- 2024時事政治考試題庫(預(yù)熱題)
- 大學(xué)生職業(yè)生涯展示
- 2024年馬原題庫400道帶答案(黃金題型)
- AQ2056-2016 金屬非金屬礦山在用空氣壓縮機安全檢驗規(guī)范 第2部分:移動式空氣壓縮機
- 2023年1月自考00804金融法二試題及答案
- 2023年新蘇教版六年級上冊科學(xué)全冊知識點(超全)
- 工會勞動競賽培訓(xùn)課件
評論
0/150
提交評論