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