EL——表達式語言(Expression Language)
為了在表現層上減少Java代碼,JSTL標記庫應運而生,EL即是JSTL的基礎。
格式:
${所有的EL表達式在這里面}
取值:
普通JSP寫法:
session.getValue("name");
EL寫法:
${sessionScope.name}
訪問JavaBean:
<% student stu=new student(); stu.no="123"; %>
學生編號是:${stu.no}
訪問集合:
${集合[序號]}
如:${book[0]}表示集合book中的第一個元素
[ ] . 運算符:
${sessionScope.user.sex};
等價于
String str="sex";
${sessionScope.user[str]};
兩種情況[ ]和 . 不能互換:
1、名稱中含有特殊字符:
${sessionScope.user["user-sex"]}
不可用
${sessionScope.user.user-sex}
來代替
2、動態取值:
${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:獲取單個參數
3、paramValues:獲取捆綁數組參數
4、Header:
5、headerValues:
6、cookie:獲取cookie的值
7、initParam:獲取web.xml中的參數值
EL自動類型轉換:
${param.count+20}
相當于
String str=request.getParameter("count");
int count=Intger.parseInt(str_count);
count=count+20;
驗證運算符empty:
${empty A}
如果A為null、不存在、空字符串、空數組均返回true,否則返回false
JSTL
首先聲明JSP文件所使用的的標簽庫,同時引入該標簽庫,并指定標簽的前綴。
<% @ taglib prefix="c" uri="http://....../core" %>
prefix表示前綴,習慣上把核心標簽庫core的前綴定義為c。
core核心標簽庫:
表達式操作:out、set、remove、catch
流程操作:if、choose、when、otherwise
迭代操作:forEach、forTokens
URL操作:import、param、url、redirect
基本數據操作:
<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>:
全部遍歷:
部分遍歷指定遍歷區間及步長:
部分遍歷并輸出元素狀態:
index:在原集合中是第幾個元素
count:在遍歷子集中是第幾個元素
first:是否是遍歷子集中的第一個元素
last:是否是遍歷子集中的最后一個元素
<c:forTokens>:
字符串遍歷
<c:import>:包含另一JSP頁面到本頁
<c:url>:得到url地址
<c:redirect>:頁面的重定向
<c:param>:向目標頁面傳遞參數