使用传统方式获取作用域数据的缺点:
缺点1:需要导包
缺点2:需要强转
缺点3:获取数据的代码过于麻烦
使用EL表达式获取作用域数据:
作用:获取作用域对象中的数据
注意:获取的是pageContext、request、session、application四个对象中的数据
语法:
${表达式}
表达式:
request对象存储了请求数据-->param.键名 (返回值)
request对象存储了请求数据-->paramValues.键名 (返回的是数组)
通过setAttribute方法存储到作用域对象中的数据:
${键名}-->返回键名所对应的值
注意:
如果存储的是普通字符串则直接返回
如果存储的是对象,则返回的是对象
获取对象中的数据:
普通对象 ${键名.属性名.....}
集合对象 list集合-->${键名[角标]}
map集合-->${键名.map集合存储的键名}
EL的作用域查找顺序:
pageContext-->request-->session-->application
注意:每次查找都是从小到大查找,找到了则获取,找不到继续找。
指定查找:
${pageScope.键名 }-->${requestScope.键名 }-->${sessionScope.键名 }-->${applicationScope.键名 }
EL表达式的逻辑运算:
${逻辑表达式} && || !
${算术表达式} +,-,*,/
${关系表达式} >,<,<=,<=,%
特殊:三目运算
注意:
+表示加法运算,不表示字符链接。使用EL表达式会报错。
EL的空值判断:
${empty 键名}
作用:
判断键名对象的值是否存有数据。
EL获取请求头数据以及Cookie
请求数据头:
${header}-->返回所有的数据头数据
${header["键名"]-->返回指定的键名的请求头数据
${headerValues["键名"]-->返回指定的键名(同键不同名)的值的数据
获取cookie数据:
${cookie}-->返回了存储了所有cookie对象的map集合
${cookie.键名}-->返回指定的cookie对象
${cookie.键名.name}-->返回指定的cookie对象存储的数据的键名
${cookie.键名.value}-->返回指定的cookie对象存储的数据的值