javascript
EL表达式与JSTL简单入门
更多博文請關(guān)注:聽到微笑的博客
EL概述
? ? ? ?EL(Express Lanuage)表達(dá)式可以嵌入在jsp頁面內(nèi)部,減少jsp腳本的編寫,EL出現(xiàn)的目的是要替代jsp頁面中腳本的編寫。
? ? ? ?簡單來說EL表達(dá)式就是讓程序員,簡化了代碼的書寫量。在學(xué)EL表達(dá)式之前我們必須通過<%= ? ? ?%>來取出域中的數(shù)據(jù),但這種方式 ? ? ? ?過于繁瑣,所以就誕生了EL表達(dá)式。
EL取出JSP四大域?qū)ο笾斜4娴臄?shù)據(jù)
- pageContext域:${pageScope.key};
- request域:${requestScope.key};
- session域:${sessionScope.key};
- application域:${applicationScope.key};
EL從四個(gè)域中獲得某個(gè)值
? ? 寫法:${key};
? ? 例:如果在request域中存儲了一個(gè)名為"productList"的對象,我們不需要通過${requestScope.productList}取出相應(yīng)的對象,只需要${productList}即可取出相應(yīng)的對象。
? ?相當(dāng)于pageContext.findAttribute()從pageContext域,request域,session域,application域中獲取屬性,在某個(gè)域中獲取后將不在向后尋找.
JSTL概述
? ? ?JSTL(JSP Standard Tag Library),JSP標(biāo)準(zhǔn)標(biāo)簽庫,可以嵌入在jsp頁面中使用標(biāo)簽的形式完成業(yè)務(wù)邏輯等功能。jstl出現(xiàn)的目的同el一樣也是要代替jsp頁面中的腳本代碼。JSTL標(biāo)準(zhǔn)標(biāo)簽庫有5個(gè)子庫,但隨著發(fā)展,目前常使用的是他的核心庫。
JSTL五大子庫
? ??Core (核心庫)? 標(biāo)簽庫的URI:http://java.sun.com/jsp/jstl/core ?常用前綴:c
? ??I18N(國際化)???標(biāo)簽庫的URI:http://java.sun.com/jsp/jstl/fmt?常用前綴:fmt
????SQL?????????????????????標(biāo)簽庫的URI:http://java.sun.com/jsp/jstl/sql ?常用前綴:sql
????XML ? ? ? ? ? ? ? ? ? ?標(biāo)簽庫的URI:http://java.sun.com/jsp/jstl/xml?常用前綴:x
????Functions ? ? ? ? ? ?標(biāo)簽庫的URI:http://java.sun.com/jsp/jstl/functions ?常用前綴:fn?
下載與導(dǎo)入
? ? 下載:Apache的網(wǎng)站下載JSTL的JAR包。進(jìn)入“http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”網(wǎng)址下載 JSTL的壓縮包。jakarta-taglibs-standard-1.1.2.zip
? ? 導(dǎo)入:解壓后在lib目錄下可以看到兩個(gè)JAR文件,分別為jstl.jar和standard.jar。其中,jstl.jar文件包含JSTL規(guī)范中定義的接口和相關(guān)類,standard.jar文件包含用于實(shí)現(xiàn)JSTL的.class文件以及JSTL中5個(gè)標(biāo)簽庫描述符文件(TLD),將兩個(gè)文件導(dǎo)入項(xiàng)目中。
JSTL核心庫的使用
-
<c:if>標(biāo)簽
? ? ? ? ? 1. 語法格式:
? ? ? ? ? ? ? ? ? ? ? ?<c:if? test="xxx"?? [var="xxx"]?? [scope="{page|request|session|application}"]? >
????? ????????????????????????????????? 執(zhí)行體
? ? ? ? ? ? ? ? ? ? ? ?</c:if>
? ? ? ? ? ?2. 標(biāo)簽屬性講解:
? ? ? ? ? ? ? ? ? ? ??test屬性:用于設(shè)置邏輯表達(dá)式,當(dāng)邏輯表達(dá)式為true時(shí)執(zhí)行執(zhí)行體
? ? ? ? ? ? ? ? ? ? ? var屬性:用于指定邏輯表達(dá)式中變量的名字
???????????????????? ? scope屬性:用于指定var變量的作用范圍,默認(rèn)值是page。
? ? ? ? ? ?3.用法案例:?
-
<c:forEach>標(biāo)簽 ?
? ? ?兩種語法格式:
? ? ? ? ? ? ? ? 1.迭代集合對象:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??<c:forEach items="xxx" ? [var="xxx"] ? [varStatus="xxx"] ? [begin="xxx"] ? [end="xxx"] ? [step="xxx"]>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?循環(huán)體.....
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </c:forEach>
? ? ? ? ? ? ? ? ?2.迭代數(shù)組:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<c:forEach ? begin="xxx" ?end="xxx" ? [var="xxx"] ? [varStatus="xxx"] ? [step="xxx"]>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 循環(huán)體....
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?</c:forEach>
? ? 標(biāo)簽屬性講解:
? ? ? ? ? ? ? ? 1.items屬性用于指定將要迭代的對象
? ? ? ? ? ? ? ??2.var屬性用于指 ?將當(dāng)前迭代到的元素保存到page域中的名稱(可以通過${xxx}獲得對象)
? ? ? ? ? ? ? ? 3.varStatus屬性用于指定當(dāng)前迭代狀態(tài)信息的對象保存到page域中的名稱
? ? ? ? ? ? ? ? ? ? ?? ? varStatus屬性可以獲取以下信息:
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? count:表示元素在集合中的序號,從1開始
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? index:表示當(dāng)前元素在集合中的索引,從0開始
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?first:表示當(dāng)前是否為集合中的第一個(gè)元素
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?last:表示當(dāng)前元素是否為集合中最后一個(gè)元素 ? ? ? ??
?? ? ? ? ? ? ? ? 4.begin屬性用于指定從集合中的第幾個(gè)元素開始迭代,begin的索引值從0開始 ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?5.step屬性用于指定迭代的步長,即迭代的增長因子
? ?用法案例:
? ? ? ? ? ? ?迭代集合對象:
? ? ? ? ? ? ? 迭代數(shù)組元素:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
總結(jié)
? ? ? ?在前端JSP頁面中會經(jīng)常用到EL表達(dá)式,和JSTL標(biāo)簽庫,EL表達(dá)式使得取出request域和其它域中數(shù)據(jù)變得極其方便,JSTL免去了<%= ? ?%>的繁瑣操作。我介紹的JSTL的兩個(gè)標(biāo)簽是核心庫中最常用的兩個(gè),它們兩個(gè)標(biāo)簽可以解決大多數(shù)問題。當(dāng)然JSTL標(biāo)簽庫中的標(biāo)簽遠(yuǎn)不止這些,有興趣的小伙伴可以深入了解。
下面是博主的其他文章,喜歡的博友們點(diǎn)個(gè)關(guān)注,謝謝您的支持。
Java8 Lambda表達(dá)式入門
Validate插件的自定義驗(yàn)證方法入門(結(jié)合Ajax實(shí)現(xiàn)用戶名的數(shù)據(jù)庫查重)
JSON轉(zhuǎn)換工具的使用
總結(jié)
以上是生活随笔為你收集整理的EL表达式与JSTL简单入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Impinj Spedway 在使用 T
- 下一篇: nodeJS 反向代理请求,解决跨域。