一、什么是EL表达式
1、Expression Language表达式语言
2、是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)
语法格式:${expression }
二、EL中的基础操作符
操作符描述
.
访问一个Bean属性或者一个映射条目
[]
访问一个数组或者链表的元素
( )
组织一个子表达式以改变优先级
+
加
-
减或负
*
乘
/ or div
除
% or mod
取模
== or eq
测试是否相等
!= or ne
测试是否不等
< or lt
测试是否小于
> or gt
测试是否大于
<= or le
测试是否小于等于
>= or ge
测试是否大于等于
&& or and
测试逻辑与
|| or or
测试逻辑或
! or not
测试取反
empty
测试是否空值
三、EL中的内置对象
内置对象描述
pageScope
page 作用域
requestScope
request 作用域
sessionScope
session 作用域
applicationScope
application 作用域
param
Request 对象的参数,字符串
paramValues
Request对象的参数,字符串集合
header
HTTP 信息头,字符串
headerValues
HTTP 信息头,字符串集合
initParam
上下文初始化参数
cookie
Cookie值
pageContext
当前页面的pageContext
四、EL从四大域中获取数据
1、如果没有使用EL的内置对象,则查找数据顺序是依次按照由小到大范围从四大域中查找指定名称的属性值
page
EL表达式request.setAttribute("name","request");
session.setAttribute("name","session");
application.setAttribute("name","application");%>name=${name}
2、使用EL内置对象,从指定域中获取数据
EL表达式request.setAttribute("name","request");
session.setAttribute("name","session");
application.setAttribute("name","application");%>pageName=${pageScope.name}
requestName=${requestScope.name}
sessionName=${sessionScope.name}
applicationName=${applicationScope.name}
五、pageContext对象
该pageContext与JSP内置对象pageContext是同一个对象。通过该对象,可以获取到request、response、session、servletContext、servletConfig等对象注意:这些对象在EL里不是内置对象,这些对象只能通过pageContext获取
EL表达式${pageContext.request.method}
${pageContext.request.requestURL}
六、param和paramValues对象
param和paramValues对象用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。
param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。
用户登录用户登录
用户名:密码:
性别:男女
爱好:运动阅读音乐其他EL表达式
username=${param.username}
sex=${param.sex}
hobby= ${paramValues.hobby[0]} ${paramValues.hobby[1]}
七、header和headerValues对象
header和headerValues对象用来访问信息头,通过使用 request.getHeader方法和request.getHeaders方法
header对象返回单一值,而headerValues则返回一个字符串数组。
EL表达式header=${header["user-agent"]}
八、initParam对象
获取初始化参数,其底层调用的是ServletContext.getInitParameter()
name
zero-vic
EL表达式name=${initParam.name}
九、empty运算符
empty运算符用于检测一个值是否为null或者空
empty是前缀运算符其运算结果是布尔值
示例:${empty user?“zero”:user.name}
规则:
指向的对象为null或者为“”时,返回true
指向的集合或者数组长度为0时,返回true
指向的Map对象不存在、指定的key不存在、对应的value为空时,返回true
十、EL总结
EL表达式不能出现在Java代码块、表达式块等JSP动态代码部分
EL可以对数据进行自动类型转换
EL不会抛出空指针异常,只会不显示
EL不会抛出数组越界异常,只会不显示
EL可以单嵌套
EL中访问存在对象的不存在属性时会抛出propertNotFoundExpectation异常
EL不具有对字符串进行处理的能力(可以使用JSTL的EL或者自定义EL函数)