什么是EL表达式?
EL全称:Expression Language,是一种写法非常简洁的表达式,语法简单易懂,便于使用。
表达式语言的灵感来自于ECMAScript和XPath表达式语言。
EL表达式的作用
让jsp书写起来更加的方便。简化在jsp中获取作用域数据或者请求数据的写法。也会搭配Jstl来进行使用。
EL表达式的使用
语法结构:$(expression),提供“.”和“[ ]”两种运算符来存取数据。
a)使用EL表达式获取请求数据
1.获取用户请求数据
2.获取请求头数据
3.获取Cookie数据
b)使用EL表达式获取作用域数据
1.获取作用域数据
2.作用域查找顺序
3.获取指定作用域中的数据
c)使用EL表达式进行运算
1.算术运算
2.关系运算
3.逻辑运算
d)使用EL表达式进行空值判断
传统方式获取作用域数据:
缺点一:需要导入相关实体类
缺点二:需要强转
缺点三:获取数据的代码过于麻烦
使用EL表达式获取作用域数据:
作用:获取作用域对象中的数据。
语法格式:${表达式}
注意:
获取的是pageContext、request、session、application四个对象中的数据,其他数据一概不理会,找到了则获取返回,找不到则什么都不做,也不报错。
获取请求数据
request对象存储了请求数据->param.键名 返回值
request对象存储了请求数据->paramValues.键名 返回的是数组
获取通过setAttribute方法存储到作用域对象中的数据
语法:${键名} ,返回键名对应的值
注意:
如果存储的是字符串则直接返回;
如果存储的是对象,则返回的是对象。
获取对象中的数据
普通对象
${键名.属性名.属性名...}
集合对象
list集合->${键名[下标]}
map集合->${键名.map集合存储的键名}
作用域查找顺序:
pageContext->request->session->application(从小到大)
注意:
每次查找都是从小到大进行查找,找到了则获取,不再继续找了。
指定作用域范围查找:
${pageScope.键名}
${requestScope.键名}
${sessionScope.键名}
${applicationScope.键名}
EL表达式的逻辑运算:
${逻辑表达式}:&& || !
${算术表达式}:+、-、*、/
${关系表达式}:>、<、>=、<=、==、!=、%
三目运算
例:
逻辑运算:${4>2} -> true
算术运算:${1+2} -> 3
关系运算:${1+'2'} -> 3
三目运算:${sex==1?'男':'女'} -> 女
注意:
“+”号在EL表达式中默认做加法运算,不做字符串连接。使用EL表达式进行字符串连接会报错。
EL的空值判断:
语法格式:${empty 键名}
作用:判断键名对象的值是否存有数据。
EL表达式获取请求头数据:
${header}->返回所有的请求头数据
${header["键名"]}->返回指定的键名的请求头数据
${headerValues["键名"]}->返回指定的键名(同键不同值)的值的数组
EL表达式获取Cookie数据:
${cookie}->返回存储了所有的cookie对象的map集合
${cookie.键名}->返回指定的cookie对象
${cookie.键名.name}->返回指定的cookie对象存储的数据的键名
${cookie.键名.value}->返回指定的cookie对象存储的数据的值。