EL、JSTL和OGNL表達式

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讀取對象中的屬性值,通過屬性.屬性.屬性…的方式獲取對象屬性值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章