1.EL表達式
1.1 EL的作用
EL(Expression Language)是一門表達式語言,它對應<%=…%>。我們知道在JSP中,表達式會被輸出,所以EL表達式也會被輸出。EL表達式可在jsp中獲取域對象裏面的值。
1.2 EL的格式
格式:${…}
例如:${1 + 2}
1.3 EL內置對象
EL一共11個內置對象,無需創建即可以使用。這11個內置對象中有10個是Map類型的,最後一個是pageContext對象。
pageScope
requestScope
sessionScope
applicationScope
param;
paramValues;
header;
headerValues;
initParam;
cookie;
pageContext;
1.4 使用
操作List和數組:${list[0]}、${arr[0]};
操作bean的屬性:${person.name}、${person[‘name’]},對應person.getName()方法;
操作Map的值:${map.key}、${map[‘key’]},對應map.get(key)。
pageScope:${pageScope.name}等同與pageContext.getAttribute(“name”);
requestScope:${requestScope.name}等同與request.getAttribute(“name”);
sessionScoep: ${sessionScope.name}等同與session.getAttribute(“name”);
applicationScope:${applicationScope.name}等同與application.getAttribute(“name”);
2.JSTL表達式
2.1 什麼是JSTL
JSTL是apache對EL表達式的擴展(也就是說JSTL依賴EL),JSTL是標籤語言!
最常用的是core庫,fmt庫偶爾用。
2.2 常見標籤
<c:out value=”aaa”/>
<c:set var=”a” value=”hello”/>
<c:remove var="a"/>
<c:url value="/AServlet"/>
<c:if test="${not empty a }">
<c:out value="${a }"/>
</c:if>
<c:set var="score" value="${param.score }"/>
<c:choose>
<c:when test="${score > 100 || score < 0}">錯誤的分數:${score }</c:when>
<c:when test="${score >= 90 }">A級</c:when>
<c:when test="${score >= 80 }">B級</c:when>
<c:when test="${score >= 70 }">C級</c:when>
<c:when test="${score >= 60 }">D級</c:when>
<c:otherwise>E級</c:otherwise>
</c:choose>
<c:forEach var="i" begin="1" end="10">
<c:set var="sum" value="${sum + i}" />
</c:forEach>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
3.OGNL表達式
3.1 在struts中使用
(1) 功能
在struts2裏面操作值棧數據
(2)值棧
每個action對象裏面都會有一個值棧對象(只有一個),可以存值和取值。
值棧分爲兩部分:第一部分 root,結構是list集合,一般操作都是root裏面數據;第二部分 context,結構map集合。
(3)存數據
在action定義變量,生成變量的get方法
(4)取數據
使用struts2的標籤+ognl表達式獲取值棧數據
<s:property value=”ognl表達式”/>
(5)OGNL的#、%使用
#
:使用#獲取context裏面數據
%
:在struts2標籤中表單標籤。在struts2標籤裏面使用ognl表達式,如果直接在struts2表單標籤裏面使用ognl表達式不識別,只有%之後纔會識別。
3.2 在mybatis中使用
(1)應用在動態sql語句中
(2)#{}和${}
#{}
表示一個佔位符號,#{}接收輸入參數,類型可以是簡單類型,pojo、hashmap。
- 如果接收簡單類型,#{}中可以寫成value或其它名稱。
- #{}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性…的方式獲取對象屬性值。
${}
表示一個拼接符號,會引用sql注入,所以不建議使用${}。接收輸入參數,類型可以是簡單類型,pojo、hashmap。
- 如果接收簡單類型,${}中只能寫成value。
- ${}接收pojo對象值,通過OGNL讀取對象中的屬性值,通過屬性.屬性.屬性…的方式獲取對象屬性值。