EL——表達(dá)式語言(Expression Language)
為了在表現(xiàn)層上減少Java代碼赞咙,JSTL標(biāo)記庫應(yīng)運(yùn)而生,EL即是JSTL的基礎(chǔ)贵试。
格式:
${所有的EL表達(dá)式在這里面}
取值:
普通JSP寫法:
session.getValue("name");
EL寫法:
${sessionScope.name}
訪問JavaBean:
<% student stu=new student(); stu.no="123"; %>
學(xué)生編號是:${stu.no}
訪問集合:
${集合[序號]}
如:${book[0]}表示集合book中的第一個(gè)元素
[ ] . 運(yùn)算符:
${sessionScope.user.sex};
等價(jià)于
String str="sex";
${sessionScope.user[str]};
兩種情況[ ]和 . 不能互換:
1琉兜、名稱中含有特殊字符:
${sessionScope.user["user-sex"]}
不可用
${sessionScope.user.user-sex}
來代替
2、動(dòng)態(tài)取值:
${sessionScope.user[param]},其中param是自定義變量
EL對象:
1毙玻、PageScope:page范圍
2豌蟋、requestScope:request范圍
3、sessionScope:session范圍
4桑滩、applicationScope:application范圍
若無范圍限定則按照page>request>session>application順序查找
除此之外其他EL對象:
1梧疲、pageContext:此JSP的PageContext
2、param:獲取單個(gè)參數(shù)
3运准、paramValues:獲取捆綁數(shù)組參數(shù)
4往声、Header:
5、headerValues:
6戳吝、cookie:獲取cookie的值
7浩销、initParam:獲取web.xml中的參數(shù)值
EL自動(dòng)類型轉(zhuǎn)換:
${param.count+20}
相當(dāng)于
String str=request.getParameter("count");
int count=Intger.parseInt(str_count);
count=count+20;
驗(yàn)證運(yùn)算符empty:
${empty A}
如果A為null、不存在听哭、空字符串慢洋、空數(shù)組均返回true,否則返回false
JSTL
首先聲明JSP文件所使用的的標(biāo)簽庫陆盘,同時(shí)引入該標(biāo)簽庫普筹,并指定標(biāo)簽的前綴。
<% @ taglib prefix="c" uri="http://....../core" %>
prefix表示前綴隘马,習(xí)慣上把核心標(biāo)簽庫core的前綴定義為c太防。
core核心標(biāo)簽庫:
表達(dá)式操作:out、set酸员、remove蜒车、catch
流程操作:if讳嘱、choose、when酿愧、otherwise
迭代操作:forEach沥潭、forTokens
URL操作:import、param嬉挡、url钝鸽、redirect
基本數(shù)據(jù)操作:
<c:out>:
輸出,<c:out value="變量名"></c:out>
<c:set>:
賦值庞钢,<c:set var="" value="" scope=""></c:set>
<c:remove>:
刪除拔恰,<c:remove var="" scope=""></c:remove>
流程控制操作:
<c:if>:
<c:if test="${判斷條件}" var="" scope="session">...</c:if>
可選屬性var和scope指定var所在的scope
<c:choose>:
<c:forEach>:
全部遍歷:
部分遍歷指定遍歷區(qū)間及步長:
部分遍歷并輸出元素狀態(tài):
index:在原集合中是第幾個(gè)元素
count:在遍歷子集中是第幾個(gè)元素
first:是否是遍歷子集中的第一個(gè)元素
last:是否是遍歷子集中的最后一個(gè)元素
<c:forTokens>:
字符串遍歷
<c:import>:包含另一JSP頁面到本頁
<c:url>:得到url地址
<c:redirect>:頁面的重定向
<c:param>:向目標(biāo)頁面?zhèn)鬟f參數(shù)