1.17 EL表達式 & JSTL標籤
EL表達式是一套簡單的計算規則,用於給JSP標籤的屬性賦值,也可以直接用來輸出
EL表達式中的+號只做加法操作,不做拼接操作。
EL表達式是爲了簡化我們的JSP代碼,具體一點就是爲了簡化在JSP裏面寫的那些java代碼。
如果使用:
1.去除4個作用域中存放的值
${pageScope.name }
${requestScope.name }
${sessionScope.name }
${applicationScope.name }
2.如果是數組(作用域的值)
若以pageContext存值
pageContext.setAttribute(“array”,str);
${array[0] },${array[1] }
3.若是集合:
pageContext.setAttribute(“list”,list);
${list[0] }….
4.若是Map集合
pageContext.setAttribute(“map”,map);
${map.key1 },${map.key2 }
若key中有值爲key.aa
${map[“key.aa”] }
從域中取值,得先存值:
${pageScope.name }指定在pageScope中找name,不在其他地方找
${name }依次在pageContext,request,session,application中找到則不繼續找
若是對象:
User user = new User(“zhangsan”,18);
session.setAttribute(“u”,user);
${u.name } 和 ${u.age }取得
${empty u }判斷是否爲空
一般使用EL表達式,用的比較多的,都是從一個對象中取出它的屬性值,比如取出某個學生的姓名。
EL表達式中的11個內置對象:
${對象名.成員 }
pageContext header param cookie
pageScope headerValues paramValues initParam
requestScope
sessionScope
applicationScope
JSTL:JSP Standard Tab Library jsp標準標籤庫
簡化jsp的代碼編寫,替換<%%>的寫法,一般與EL表達式配合
我們使用的是JSTL1.1版本 而1.0版本的JSTL不支持EL表達式
怎麼使用:
1.導入jar文件到工程的webContent/web-Inf/lib jstl.jar & standard.jar
2.在jsp頁面上,使用taglib指令,來引入標籤庫
3.注意:如果想支持EL表達式,那麼引入的標籤庫必須選擇1.1的版本,1.0的版本不支持EL表達式
常用標籤:
<c:set></c:if>
<c:if test=””></c:if>
<c:forEach></c:forEach>
c:set
<c:set var=”name” value=”zhangsan” scope=”session”></c:set>
${session.name }
聲明一個對象name,對象的值zhangsan,存值在session域中,默認爲page
c:if
判斷test裏面的表達式是否滿足,如果滿足,就執行c:if標籤中的輸出,c:if是沒有else的
<c:set var=”age” value=”18” >
<c:if test=”${age>26 }”>
年齡大於26…
</c:if>
<c:if test=”${age<=26 }”>
年齡小於等於26
</c:if>
</c:set>
定義一個變量名flag,去接收前面表達式的值,然後存在session域中
<c:if test=”${age>26 }” var=”flag” scope=”session”>
年齡大於26
</c:if>
c:forEach
從1開始遍歷到10,得到結果賦值給i,並且會存儲到page域中,step:增幅爲2
<c:forEach begin=”1” end=”10” var=”i” step=”2”>
${i }
</c:forEach>
items:表示遍歷哪一個對象,注意,這裏必須寫EL表達式
var:遍歷出來的每一個元素用user去接收:
<c:forEach var=”user” items=”${list }”>
${user.name }……${user.age }
</c:forEach>
choose標籤:(相當於if(){}else if(){}…)
性別:
<c:choose>
<c:when test=’${emp.gender==”m” }’>男</c:when>
<c:when test=’${emp.gender==”f” }’>女</c:when>
</c:choose>