如果你將一個字符串放進request裏面,如果我們用jsp的知識來在前臺取的數據,如下所示:
<%= request.getAttribute("hello") %>
但如果用EL表達式的話,就可以寫成下面的樣子:
${hello }
說明一下:
el表達式的隱含對象爲pageScope, requestScope, sessionScope, applicationScope
如果未指定scope,它的搜索順序爲:pageScope~applicationScope,當然我們可以顯式的指定EL表達式的scope:
${requestScope.hello }
假設我們把一個user對象扔進request,user對象包含username, age等信息,我們怎麼取出該對象的username和age信息呢:
${user.username }
${user.age }
注意:user對象應該提供getUserName()和getAge()方法,因爲EL表達式其實是調用類似的方法來取得相應的內容。
現在假設後臺是把一個map對象扔進了request裏面,代碼如下:
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
request.setAttribute("map", map);
那麼如何在前臺取得key1和key2對應的值呢?可以用下面的方法:
${map.key1 }
${map.key2 }
但是如果後臺現在你不知道傳回多少數據,需要遍歷的話,EL表達式是完成不了的,這就需要配合JSTL表達式來完成,後面將會講解
假設現在後臺中是一個字符串數組:
String[] arr = {"a", "b", "c"};
request.setAttribute("arr", arr);
則前臺是這樣來獲得第二個元素:
${arr[1] }
但如果是對象數組,例如是10個user對象的數組,我們現在來取得第二個user對象的姓名:
${arr[1].username }
如果是List容器,取法跟數組一樣:
${arr[1].username }
EL表達式對運算符的支持:
假設要計算1+2 : ${1+2 }
便可
除法 : 10/5 : ${10/5 }
也可以寫成 ${10 div 5 }
取餘 : 10 % 3 : ${10%3 }
或者 ${10 mod 3 }
等於 : ${10==10 }
或者 ${10 eq 10 }
不等於 : ${10 != 10 }
或者 ${10 ne 10 }
小於 : ${8 < 10 }
或者 ${8 lt 10 }
大於 : ${8 > 10 }
或者 ${8 gt 10 }
小於等於 : <= | le
大於等於 : >= | ge
and : && | and
或 : || | or
非 : ! | not
對於取出來的數據是不是爲空,可以用下面的函數:
${empty value }
對於不存在,或者你在request裏面設置的null, 或者數組,字符串,list,map等容器的長度爲0的情況下都會輸出true,其他情況輸出false