EL表达式概述
- 概念:Expression Language ,表达式语言
- 作用:替换和简化jsp页面中的代码的编写;
- 语法:
${表达式}
;
- jsp默认支持EL表达式:
- 如果要忽略EL表达式:
- 设置jsp中的page指令:
isELIgnored = "true"
,忽略当前jsp页面中的所有EL表达式;
\${表达式}
:忽略当前这个EL表达式。
- 用法:
EL的运算
- 算术运算符:
+ ,-, *, / ,%
,其中/
可以用div
代替,%
可以用mod
代替。
- 比较运算符:
> < >= == !=
- 逻辑运算符:
&&(and), ||(or), !(not)
- 空运算符:
empty
:
- 功能:用于判断字符串,集合,数组对象是否为null并且长度是否为0;
- 示例:
${empty list}
,返回结果为boolean型。 一般常用${not empty list}
:判断不为null或者长度不为0;
EL获取值
- EL表达式只能从域对象中获取值;
- 语法:
${域名称.键名}
:从指定域中获取指定键的值;
${键名}
:表示依次从最小的域中查找是否有该键对应的值,知道找到为止,若没有找到,则返回空字符串。
- 域名称与域对象的对应关系:
- pageScope --> pageContext;
- requestScopt --> request;
- sessionScope --> session;
- applicationScope --> application(ServletContext);
- 示例:
- 在域对象中存储了
name 张三
- 获取:
${requestScope.name}
将在页面上打印张三。
- EL获取对象值:
${域名称.键名.属性名}
:本质上回去调用对象的getter方法,所以必须有对应的getXxx方法的属性才能调用(甚至只有getXxx的方法,没有实际对应的属性也可以)
- 对应的对象必须首先以键值对的形式存入对应的域对象中,如:
request.setAttribute("user",user)
,将user对象存入request域中去。
- EL获取List集合:
- EL获取Map集合的值
${域名称.键名.key名称}
${域名称.键名["key名称"]}
EL的隐式对象
- EL中不用创建可以直接使用的对象(类似jsp中的内置对象)。
- EL表达式中有11个隐式对象:
- pageContext对象:
- 获取其他八个内置对象。
- 示例:动态获取虚拟目录:
${pageContext.request.contextPath}