1, 传统方式获取作用域数据:
缺点:导入包 ,需要强转 ,获取数据的代码过于麻烦。
2,使用El表达式获取作用域数据:
作用:获取作用域对象中的数据。
(注意:获取的是pageContext、request、session、application四个对象中的数据,其他数据一概不理会。
找到了则获取返回,找不到则什么都不做,也不报错)
语法:${表达式}
表达式:
1, 获取请求数据(request)
1,request对象存储了请求数据--->param.键名 返回值
2,request对象存储了请求数据--->paramvalues.键名 返回的是数组
<!-- 请求中原有数据 -->
<!-- 普通的request作用阈里面 unname 的value值 -->
<b>${param.uname}</b><br />
<!-- 普通的request作用域里面 fav 一键多值 fav=value1&fav=value2... (数组形式)-->
<b>${paramValues.fav[0]}</b><br />
2, 通过setAttribute方法存储到作用域对象中的数据
${键名} 返回键名所对应的值。
注意:
如果存储的是普通字符串则直接返回
如果存储的是对象,则返回的是对象
获取对象中的数据:
普通对象
${键名.属性名.属性名....}
集合对象
list集合--->${键名[角标]}
map集合--->${键名.map集合存储的键名}
<!--str2 不能通过el表达式进行输出 其不为四大作用阈中的数据-->
<% String str2 = "无语" %>
<!-- 请求中加入数据(setAttribute) -->
<!-- 普通字符串 -->
<b>${str}</b><br />
<!-- 普通对象 -->
<b>${user}</b><br />
<!-- List<String>集合 -->
<b>${list[1]}</b><br />
<!-- List<User> -->
<b>${list[0].user.value}</b><br />
<!-- Map<String,String> (key,value) 通过键获取value -->
<b>${map.key}</b><br />
<!-- Map<String,User> 通过键获取user(对象) 通过user对象获取里面的value属性 -->
<b>${map2.string.user.value}</b><br />
<!-- 没有任何输出 -->
<b>${str2}</b>
<hr />
作用域查找顺序:
a,默认查找顺序:
pageConext-->request--->session--->application
注意:
每次查找都是从小到大进行查找,找到了则获取,不再继续找了。
b,指定查找:
${pageScope.键名} ${requestScope.键名} ${sessionScope.键名} ${applicationScope.键名}
<h3>EL的作用域查找顺序 键值同名 </h3>
<%
pageContext.setAttribute("hello","hello pageContext");
request.setAttribute("hello","hello request");
session.setAttribute("hello","hello session");
application.setAttribute("hello","hello application");
%>
<!-- 指定作用域 -->
${pageScope.hello},
${requestScope.hello},
${sessionScope.hello},
${applicationScope.hello},
El表达式的逻辑运算:
${逻辑表达式}:&& || !
${算术表达式}:+,-,*,/
${关系表达式}:>,<,>=,==,!=,%
特殊:
三目运算
注意:
+ 表示加法运算,不表示字符链接。使用EL表达式进行字符链接会报错。
<h3>EL表达式的逻辑运算</h3>
${1+2}--${1*2}--${4/2}--${4-2}--${4%3}--${4==4}--${4>2}--${sex==1?'男':'女'}--${1+'2'}
EL的空值判断:
${empty 键名}
作用:
判断键名对象的值是否存有数据。
<h3>EL表达式的空值判断</h3>
${empty s}--${empty s1}--${empty s2}---${empty s3}
EL获取请求头数据和Cookie数据:
请求头数据:
${header}-->返回所有的请求头数据
${header["键名"]}--->返回指定的键名的请求头数据
${hedaerValues["键名"]}--->返回指定的键名(同键不同值)的值的数组。
获取Cookie数据:
${cookie}--->返回存储了所有的cookie对象的map集合
${cookie.键名}---->返回指定的cookie对象
${cookie.键名.name}--->返回指定的cookie对象存储的数据的键名。
${cookie.键名.value}--->返回指定的cookie对象存储的数据的值。
<h3>EL获取请求头数据和Cookie数据</h3>
${header}--${headerValues["accept-language"][0]} <br /><br /><br />
${cookie}--${cookie.JSESSIONID}---${cookie.JSESSIONID.name}--${cookie.JSESSIONID.value}