EL表达式全称Expression Language,是用来替代jsp中的表达式脚本,是因为EL表达式相较于jsp的表达式脚本更为简洁,可读性更好。EL表达式更多时候用于获取域对象中的数据。
${ 表达式}
第一类:
关系运算即大于、小于、等于等关系运算,与java中的一致。
第二类:
逻辑运算,包括:
且运算:&& 或 and
或运算:|| 或 or
非运算: ! 或 not
第三类:
算术运算即加减乘除、取余运算,与java中一致。
第四类:
empty运算,empty运算用于判断一下情况:
第五类:
三元运算:与Java中相同,如下
"表达式1"? "表达式2":"表达式3"
第六类:
点运算和[]括号中的运算符
点运算:用来调用相关方法
[]中用来屏蔽掉特殊运算(之后会做相应示范)
第一,输出普通属性:
<%-- 输出普通属性--%>
${ person.id }
${ person.name }
第二,输出数组中的某一个元素:
<%--输出数组中的某一个--%>
${person.phone[0] }
第三,输出列表以及其中某个元素:
<%--输出列表--%>
${ person.subject }
<%--输出列表中的某一项--%>
${ person.subject[2] }
第四,输出Map及其中的某个元素:
<%--输出Map--%>
${ person.family }
<%--输出Map中的某一项--%>
${ person.family.dad }
在此将介绍[]运算的作用,
<%--介绍[]运算--%>
未加[]运算:${ person.family.d.o.g }
加[]运算 :${ person.family["d.o.g"]}
第一类,四大域对象(以下为变量名)
pageScope、requestScope、sessionScope、applicationScope
该四大域对象用来获取不同狱中的顺序,如果不指明为哪个域,并且每个域中有相同的参数名时将从最小域找起,找到即停止。
<%
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
pageContext.setAttribute("key","pageContext");
%>
${ key }
所以在要获取相关域中的参数时要在EL表达式中使用相关的域对象。
第二类,pageContext对象的使用:
一般用于获取request对象,使用request对象来获取请求的各种信息
<%
pageContext.setAttribute("req",request);
%>
<%--获取请求协议--%>
${ req.scheme}
<%--获取服务器的ip或域名--%>
${ req.serverName}
<%--获取服务器的端口号--%>
${ req.serverPort }
<%--获取当前的工程路径--%>
${ req.contextPath }
<%--获取请求的方式--%>
${ req.method }
<%--获取请求的主机的ip--%>
${ req.remoteHost }
<%--获取请求主机的端口号--%>
${ req.remotePort }
<%--获取会话标识--%>
${ pageContext.session.id }
第三类,其他对象的使用:
类1:
param,为Map
paramValues, 为Map
${param.username}
${paramValues.hobbies[1]}
类2:
header,为Map
headerValues,为Map
类3:
cookie,为Map
类4:
header,为Map
headerValues,为Map
类3:
cookie,为Map
类4:
init-param,为Map