一、EL作用范围
EL从以下四个作用域中取值,其他的数据一概不理会:
1、pageContext
2、request
3、session
4、application
这四个作用域范围按编号依次增大,EL的取值顺序也遵循这个顺序:先从pageContext搜索,若有则返回,没有继续从request寻找,依次类推。
二、EL的语法
1)使用getParameter()获取的值
(1)一个键对应一个值:${param.键名}
(2)一个键对应多个值:${paramValues.键名[index]}
2)使用getAttribute()获取的值
(1)字符串:${键名}
(2)对象 :${键名.属性名}
(3)集合:list:${键名[index]}
map:${键名.map里的键名}
三、EL的指定查找
JSP中的EL默认查找方式是从pageContext开始逐渐向大作用域查找。我们也可以指定作用域进行查找:
1)只查找pageContext域:${pageScope.键名}
2)只查找request域:${requestScope.键名}
3)只查找session域:${sessionScope.键名}
4)只查找application域:${application.键名}
四、EL的运算
1)逻辑运算:${逻辑表达式}(&&、||、!)
2)算数运算:${算术表达式}(+、-、*、/)
注意,EL中的+并没有重载。所以说,${1+"2"}的结果仍然为3。
3)关系运算:${关系表达式}(>、<、==、三目运算符)
五、EL的空值判断
EL的空值判断使用empty表达式
1)空字符串:
req.setAttribute("s","");
${empty s} //false
2)新创建的对象:
req.setAttribute("s1",new User());
${empty s1} //true
这里为true的原因是因为类变量会被赋予初始值
3)新创建的集合:
req.setAttribute("s2",new ArrayList<Integer>());
${empty s2} //false
req.setAttribute("s3",new HashMap<Integer,String>());
${empty s3} //false