在MVC體系結構中,JSP頁面只是用來顯示數據,但JSP腳本中的表達式功能不夠強大,它不能直接對隱式對象中某對象的屬性進行顯示,需要配合Scriptlet才能顯示數據,很是麻煩,如果在JSP頁面中使用EL表達式將大大簡化JSP頁面中的Java代碼,在配合JSP標准動作,JSTL,可達到真正的JSP無腳本。 EL(Expression Language)表達式語言,語法:${表達式},例如:${"Beijing 2008"}則在JSP頁面輸出Beijing 2008,相當於JSP腳本中的<%="Beijing 2008"%>,在EL表達式中的“'”和“"”功能是一樣的,表示一個字符串; 在JSP頁面中我們可以禁用EL表達式,需要配置page指令的isELIgnored屬性,屬性值若為true則支持EL表達式,若為false則禁用表達式,默認情況下是支持EL表達式的。 在EL表達式中我們可以使用運算符以達到我們想要的結果,運算符按作用分為以下幾種: 1.算術運算符 + 注意:在EL表達式中的‘+’只有數學運算的功能,沒有連接符的功能,它會試着把運算符兩邊的操作數轉換為數值類型,進而進行數學加法運算,最后把結果輸出。若出現${'a'+'b'}則會出現異常。 例如:${6+6} - 例如:${4-3} * 例如:${4*3} / 例如:${9/3} 2.關系運算符 > 例如:${8>9} >= 例如:${45>=9} < 例如:${4<9} <= 例如:${9<=8} == 例如:${4==4} != 例如:${4!=3} 3.邏輯運算符 && 例如:${false && false} || 例如:${true || false} ! 例如:${!true}相當於${false} 4.三元運算符 ? : 例如:${3>2?'是':'不是'} 在EL表達式中還有一些特殊運算符: empty 判斷EL表達式中的表達式是否為空,例如:${empty sessionScope.user} . 是我們最常用的,作用相當於執行Bean中的get方法。 例如:${sessionScope.user.userName}意思是:在會話中得到名稱為user的Bean對象,通過“.”運算符執行getUserName();方法,返回存放在Bean中的用戶名屬性的值。 [] 作用和“.”運算符的一樣,只不過[]運算符可以執行一些不規則的標識符。 例如:${requestScope.user["score-math"]},這個表達式中有不規則的標識符,是不能使用“.”來訪問的。 在EL表達式中為我們提供了許多內置對象,使我們很方便的得到我們想要的數據: 1.從隱式對象中得到數據: pageScope 例如:${pageScope.user.userName} 相當於<%=page.getAttribute("user").getUserName%> requestScope 例如:${requestScope.books} 相當於<%=request.getAttribute("books")%> sessionScope 例如:${sessionScope.lastURL} 相當於<%=session.getAttribute("lastURL")%> applicationScope 例如:${applicationScope.provice} 相當於<%=application.getAttribute("provice")%> 2.從請求頭中得到數據: header 例如:${header.referer}得到請求過來的URL 3.訪問JSP頁面中的內置對象: pageContext 例如:${pageContext.request}在EL表達式中我們是不能直接使用JSP頁面的內置對象,但可以是用pageContext間接得到這些內置對象,再來使用。