EL表達式必須依賴於JSP才能生存下去
作用:減少<%%>(java代碼)在頁面上的顯示,利於代碼的維護
EL的基本語法:
往瀏覽器中輸出內容
${1}
${“11”}
${'111’}
算術運算符
${4+1}
${4-1}
${4*1}
${4/1}
注意:EL表達式中的+號沒有拼接作用
<%=1+2+”3”%>
${1+2+”3”}
<%=1+2+”a”%>
${1+2+”a”}
關系運算符
${1>8}
邏輯運算符
${1==1 && 1<3}
//邏輯運算符的特殊寫法
${true && false} -- ${true and false}
${true || false} -- ${true or false}
${!true} -- ${not true}
empty關鍵字:判斷是否為null
${empty “”}<br>
${empty null}<br>
eq關鍵字
${“aa” eq “aa”}
EL表達式的取值問題
EL表達式只能從四大作用域中取數據(pageContext,requset,session,application),目前只講requset
<%
int a = 100;
%>
${a/2}
取值不到,因為EL表達式只能從JSP的四大作用域當中獲取變量
<%
int a = 100;
request.setAttribute(“wy”,a);
%>
${wy/2}
注意:
1.EL表達式不能調用方法
2.EL表達式不能在html中使用,JSP中的EL表達式有可能會出現失效的問題
解決:在第一行加上一個屬性 isELIgnored="false" 即可
JSTL核心標簽庫
使用步驟:
1.在頁面的頂部導入標簽庫
taglib::標簽庫
uri:鏈接
提示:URL與RUI的區別
如:
URL(完整路徑): http://zhidao.baidu.com/question/68016373.html --資源的真名
URI(絕對路徑): /question/68016373.html --資源的名稱
RUI包含URL
prefix:前綴,一般使用c
2.在頁面上使用c標簽
<c:out value=””></c:out> //輸出,可以防止JS代碼執行
等同於 ${“aaa”}
例:
<c:out value=”<script>alert(‘攻擊腳本’);</script>”></c:out>
${“<script>alert(‘攻擊腳本’);</script>”}
<c:set var=”” value=”” scope=””><c:set> //在JSP頁面上定義變量
例:
<c:set var=”name” value=”李四” scope=”page”><c:set>
等同於 pageContext.setAttribute(“name”,”李四”);
<c:if test=””></c:if> //if邏輯判斷
例:
<c:set var=”sex” value=”男”></c:set>
<c:if test=”${sex == ‘男’}”>
男人
</c:if>
<c:if test=”${sex eq ‘女’}”>
女人
</c:if>
注意: c:if 標簽沒有else標簽
<c:choose></c:choose> //switch
<c:when test=””></c:when> //case
<c:otherwise></c:otherwise> //default
例:
<c:set var=”sex” value=”男”></c:set>
<c:when test=”${sex == ‘男’}”>
男人
</c:when>
<c:when test=”${sex eq ‘女’}”>
女人
</c:when>
<c:otherwise”>
妖
</c:otherwise>
<c:forEach var=”” items=”” varStatus=””></c:forEach>
var:數據組當中的每個元素
items:數組的名稱(必須使用EL表達式)
varStatus:數組的信息 如:varStatus = vs
vs.index 循環的索引(從0開始)
vs.count 循環的次數(從1開始)
vs.first 是否是第一個
vs.last 是否是最后一個
例1:
<%
String [] arr = {“男人”,”女人”,”妖怪”};
pageContext.setAttribute(“arr”,arr);
%>
<c:forEach var=”e” items=”${arr}” varStatus=”vs”>
${e}--${vs.index}--${vs.count}--${vs.first}--${vs.last}
</c:forEach>
例2:
<c:forEach begin="1" end="10" var="i" step="3">
${i }
<c:forEach>
注意:JSP頁面中表單單行變色的問題
<c:forEach items="${list}" var="u" varStatus="vs">
<tr bgcolor="${vs.count%2 == 0 ? "red":"blue"}">
<td>${u.id}</td>
<td>${u.name}</td>
</tr>
</c:forEach>
格式化
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
例1:時間格式化:
serlvet:
req.setAttribute("date",new Date());
JSP
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss">
例2:數字格式化(千分位)
serlvet:
req.setAttribute("number",111223444.56644);
JSP
<fmt:formatNumber value="${number}" pattern="##,###.##"> //##,###.##數字格式化的格式,每個系統的要求不一樣,一般公司會有統一的格式