EL表達式的使用前提是,容器必須在2.4及以上版本。
EL表達式中有隱式對象,pageScope,requestScope,sessionScope,applicationScope EL表達式默認查找變量的順序會按照以上順序從隱式對象中取值,爲了提高效率,我們可以直接指定搜索域。
如: 後臺 request.setAttribute("a","hello");
前臺 ${requestScope.a}
EL表達式取得request中對象中的值:
後臺:
request.setAttribute("user",user);
前臺:
${user} 取得user對象
${user.userName} 取得user對象的userName屬性的值
${user.group.name} 取得user對象所屬組的組名
EL表達式取得request中的Map中的值
後臺:
Map map = new HashMap();
map.put("key1","abc");
map.put("key2","bcd");
request.setAttribute("mapValue",map);
前臺:
${mapValue.key1} //${mapValue} 取得map對象,之後導航key1就可以取得key1的值
${mapValue.key2}
EL表達式取得request中的數組中的值(採用[]和下標)
後臺:
String[] str= new String[]{"a","b",”c“};
request.setAttribute("str",str);
前臺:
${str[1]} //下標從0開始
EL表達式取得request中的對象數組中的值(採用[]和下標)
後臺:
user[] users = new User[10];
while(i < user.length){
User user = new User();
user.setId(i);
user.setUserName("user"+i);
users[i] = user;
}
request.setAttribute("user",user);
前臺:
${user[2].userName}
EL表達式取得request中的集合對象中的值(採用[]和下標)
後臺:
ArrayList list = new ArrayList();
while(i < 10){
User user = new User();
user.setId(i);
user.setUserName("user"+i);
list.add(user);
}
request.setAttribute("user",list);
前臺:
${user[3].userName}
注意:EL表達式運算符
+ - * (/ div) (% mod) (== eq) (!= ne) (< lt) (<= le) (>= ge) (&& or) (! not)
EL表達式判空
後臺:
request.setAttribute("value2","");
request.setAttribute("value3",new ArrayList());
request.setAttribute("value4","123456");
request.setAttribute("value5",null);
前臺:
${empty value1}
${empty value2}
${empty value3}
${empty value4}
${empty value5}
結果:
true
true
true
false
true