本人發(fā)現(xiàn)Struts2中的標(biāo)簽和OGNL表達(dá)式,和hibernate中用到的EL表達(dá)式和JSTL有一定的相似之處,對比學(xué)習(xí)會更加清晰,所以加以對比,以加深記憶。 OGNL(Object-Graph Navigation Language)對象圖導(dǎo)航語言 OGNL表達(dá)式訪問值棧: 1. 值棧(Value Stack),可以理解為一個 存儲數(shù)據(jù)的Map,主要存儲了當(dāng)前action 的 實例。所以就可以使用OGNL訪問值棧中的內(nèi)容,也就是action的屬性 2.OGNL表達(dá)式通過getter方法 來訪問action中的屬性,所以,action中的屬性一定都要添加getter/setter方法。 例:< s: property value = "house . street . streetName"/> //< s: property>用來在jsp頁面中顯示OGNL表達(dá)式的值,OGNL表達(dá)式寫在value屬性中。 3. 其實,值棧是被存儲在request當(dāng)中的,不過由于action中保存的值使用頻率很高,所以O(shè)GNL提供了直接 訪問值棧的方式,以簡化編程。 OGNL表達(dá)式訪問Stack Context: action以外的數(shù)據(jù)都存儲在Stack Context中,如request , session , application等。訪問Stack Context中的 內(nèi)容,需要加上“#” 符號 如:< s: property value = "#session.userName"/> //訪問session中 的userName EL(Expression Language)表達(dá)式 EL表達(dá)式用來訪問各種作用域中的數(shù)據(jù),并顯示在JSP頁面中。 語法:${ EL表達(dá)式 } // "$" 和“{}” 缺一不可 要點 1. 使用EL表達(dá)式之前,必須將操作的對象保存到作用域中 。JSP提供了4種作用域: page ,request , session , application. 2. “作用域名稱.” 方式即可實現(xiàn) 使用作用域 訪問對象 讀取屬性值,如: ${ requestScope.news["title"]} //讀取新聞標(biāo)題 3. 當(dāng)使用EL表達(dá)式訪問某個屬性值是,應(yīng)當(dāng)指定 查找的范圍 。如果程序不指定查找的范圍,那么 系統(tǒng)會自動按照( page -》request -》 session -》 application)的 順序進(jìn)行查 找所以,以上例子也可以寫成:${ news["title"]} 4. EL表達(dá)式訪問對象的屬性,有兩種方法: “.”操作符和 "[ ]" 操作符 ${news.title} 或者 ${ news["title"]} 5. EL表達(dá)式訪問變量和 集合 ${ userName} 訪問變量 ${ list[0] } 訪問集合
Struts2標(biāo)簽 使用Struts2標(biāo)簽之前需要在 JSP頁面上 添加taglib指令:<%@ tagib uri = "/struts-tags" profix = " s" %> 分類: 通用標(biāo)簽(Generic Tag) 數(shù)據(jù)標(biāo)簽(Data Tag) <s:property> <s:url> <s:a> <s:param> <s:include> <s:debug> <s:date> <s:set> 控制標(biāo)簽 (Control Tag)
<s:if> <s:elseif>
<s:else> <s:iterator> UI標(biāo)簽(UI Tag)
<s:form> <s:textfield>
<s:textarea> <s:submit> <s:select> <s:doubleselect> Ajax標(biāo)簽( Ajax Tag) <sx:datetimepicker> 使用datetimepicker日歷控件,需要以下步驟: 1.在項目中引入struts2-dojo-plugin-2.1.8.jar 。 2. 導(dǎo)入<%@ tagib uri = "/struts2-dojo-tags" profix = " sx" %> 。 3. 在<head> 中添加 <sx:head parseContent = "true"/>。 4. 添加標(biāo)簽 <sx:datetimepicker name = "timer" label= "發(fā)表時間"/>。
JSTL(Java Page Standard Tag Library, JSP標(biāo)準(zhǔn)標(biāo)簽庫) JSTL主要用來實現(xiàn)邏輯控制。完成以下兩個步驟才可以再JSP中使用JSTL: 1.下載JATL所需的jstl,jar 和 standard.jar,并將其添加到項目中 。 2.在JSP頁面中添加標(biāo)簽指令:<%@ tagib uri = "http://Java.sun.com/jsp/jstl/core" profix = " c" %> 標(biāo)簽: <c:out/> <c:set/> <c:remove/> <c:forEach/ > <c:if/> <c:url/ > <c:param/> <c:import/>等等 <fmt:format/> <fmt:formatNumber/>格式化時間和日期 |
|