三階段錄屏-ognl和struts標(biāo)簽_第1頁
三階段錄屏-ognl和struts標(biāo)簽_第2頁
三階段錄屏-ognl和struts標(biāo)簽_第3頁
三階段錄屏-ognl和struts標(biāo)簽_第4頁
三階段錄屏-ognl和struts標(biāo)簽_第5頁
免費預(yù)覽已結(jié)束,剩余28頁可下載查看

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論