作用
EL和JSTL一起使用取代JSP页面中嵌入Java代码
功能
语法:${EL表达式}
EL获取数值
EL执行运算
EL获取Web开发常用的对象
EL表达式语句在执行的时候,会调用pageContext.foindAttribute()方法,分别从page、request、session、aaplication范围内查找对象,找到就返回相应对象,找不到就返回""(不是null,是空字符串)。EL获取的数据需要在如上四个作用域中。
EL获取数值
<% pageContext.setAttribute("name", "Marry") %> === ${pageScope.name} ---> 简写${name}
1、EL获取数组的数据:
<%
String[] arrs = {"aa","bb","cc"};
pageContext.setAttribute("arrs",arrs);
%>
${arrs[0]}
${arrs[1]}
${arrs[2]}
运行结果: aa bb cc
2、EL获取List集合的数据:
<%
List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.add("33");
pageContext.setAttribute("list",list);
%>
${list[0]}
${list[1]}
${list[2]}
运行结果: 11 22 33
3、EL获取Map集合的数据:
<%
Map<String,Integer> map = new ArrayList<String,Integer>();
list.add("aa",111);
list.add("bb",222);
list.add("cc.dd",333);
pageContext.setAttribute("map",map);
%>
${map.aa}
${map.bb}
${map["cc.dd"]}
运行结果: 111 222 333
注意:如果map的key中包含了特殊字符,就不能用. 只能用[]
. 是用来获取对象的属性的
[] 是用来获取下标的
EL执行运算
1、执行算数运算
<%
pageContext.setAttribute("n1",10);
pageContext.setAttribute("n2",20);
%>
${n1+n2} ----30
2、执行关系运算
${n1 < n2} 或者 ${n1 lt n2} ----true
${n1 > n2} 或者 ${n1 gt n2} ----false
${n1 == n2} 或者 ${n1 eq n2} ----false
${n1 < n2} 或者 ${n1 lt n2} ----true
${n1 >= n2} 或者 ${n1 ge n2} ----false
${n1 <= n2} 或者 ${n1 le n2} ----true
3、执行逻辑运算
pageContext.setAttribute("n3",30);
pageContext.setAttribute("n4",40);
${(n1 < n2) && (n3 < n4)} 或者 ${(n1 < n2) and (n3 < n4)} ----true
${(n1 < n2) || (n3 < n4)} 或者 ${(n1 < n2) or (n3 < n4)} ----true
${!(n1 < n2)} 或者 ${ not(n1 < n2) } ----false
4、执行三元运算
${n1 < n2 ? "n1小于n2" : "n1不小于n2"} ----n1小于n2
5、empty运算符
判断是否为空
${ empty user}
EL获取web开发常用对象
EL表达式定义了11个开发中的常用对象:
(1)pageContext :相当于JSP内置对象中的pageContext
(2)pageScope :获取指定域下的名称的数据
(3)requestScope :获取指定域下的名称的数据
(4)sessionScope :获取指定域下的名称的数据
(5)applicatinScope :获取指定域下的名称的数据
(6)param :在页面中接收请求参数(接收一个名称对应一个参数,相当于request.getParameter())
(7)paramValues :在页面中接收请求参数(接收一个名称对应多个参数,相当于request.getParameterValues())
(8)header :在页面上获取请求头(获取一个key对应一个value头)
(9)headerValues :在页面上获取请求头(获取一个key对应多个value头)
(10)cookie :访问cookie的名称和值
c
o
o
k
i
e
.
k
e
y
.
n
a
m
e
{cookie.key.name}
cookie.key.name{cookie.key.value}
(11)initParam :获得全局初始化参数的值
${ param.name} 相当于 request.getParameter(“name”);
${ paramValues.hobby[0]} 相当于 request.getParameterValues(“hobby”);
常用的请求头 User-Agent
${ header[User-Agent]} 获得浏览器的类型
使用pageContext可以想JSP中那四个作用域中存储数据,另外通过它可以获得另外8个内置对象
${ pageContext.request.contextPath} —获得工程的路径(重要!)
${ pageContext.request.remoteAddr} —获得ip地址