介绍
- 目的:为了使jsp中数据访问更加简单
- 作用域:可以取出域对象(pageContext、request、session、application)中保存的数据,前提需要域对象先 setAttribute(key,value),然后EL表达式相当于替代了getAttribute(key,value)
- 语法:
${变量名}
,变量名是域对象存的数据的key值
规则
- 只能在jsp页面内使用
- 默认查找顺序:如果四个域对象中存储了相同的变量名,那么
${变量名}
默认取出的是最小作用域的域对象的数据(搜索顺序为:pageContext > request > session > application) - 指定作用域查找:
${pageScope.xxxname}
${requstScope.xxxname}
${sessionScope.xxxname}
${applicationScope.xxxname}
- EL表达式可以操作对象,读值赋值
有一个User对象,包括name、id属性,
${User.name} //相当于调User的get方法得到name,记住这里并不是直接读取变量,而是getName()方法,是和方法绑定而不是成员变量绑定
${User.name=“julian”} // 相当于调User的set方法赋值name,但实际不会用,EL表达式主要用来读取数据
${User["name"]} //这样等价于第一种写法,也是可以取出来
- EL表达式内可以解析操作符
&&
||
!
<
>
<=
>=
==
!=
,等价于单词and
or
not
lt
gt
le
ge
eq
ne
,使用时单词前后加空格。
可以用单词empty判断变量是否为空(标准:变量为null、字符串长度为0、集合的size为0等)
<%
pageContext.setAttribute("num1", 10);
pageContext.setAttribute("num2", 9);
%>
${num1 > num2} // 返回true
${num1 gt num2} //等价于上面,返回true
${empty num3} // 返回true
${not empty num3} // 返回false