1、定义
EL全名为Expression Language,解决了在开发Java Web应用时经常需要将大量Java代码片段嵌入到JSP页面中导致页面看起来很乱的问题。EL表达式通常与JSTL一起使用(还可以与JavaScript结合使用),EL提供了获取对象及属性的简单方式,还可以用来创建算术表达式和逻辑表达式。在EL表达式内可以使用整型数、浮点数、字符串、常量true和false,还有null。
2、基本语法
EL的基本语法以 "${" 开头,以 "}" 结尾,中间为合法的表达式,例如:
${expression}
其中expression为有效的表达式。
3、基础操作符
操作符 |
描述 |
. |
访问一个Bean属性或者一个映射条目 |
[] |
访问一个数组或者链表的元素,也可以访问Bean属性 |
( ) |
组织一个子表达式以改变优先级 |
+ |
加 |
- |
减或负 |
* |
乘 |
/ or div |
除 |
% or mod |
取模 |
== or eq |
测试是否相等 |
!= or ne |
测试是否不等 |
< or lt |
测试是否小于 |
> or gt |
测试是否大于 |
<= or le |
测试是否小于等于 |
>= or ge |
测试是否大于等于 |
&& or and |
测试逻辑与 |
|| or or |
测试逻辑或 |
! or not |
测试取反 |
empty |
测试是否空值 |
注意:"[]" 和 "." 运算符都可以访问数据,但如果对象的属性名中包括一些特殊符号(如 "-" 或 ".")时,只能使用 "[]" 运算符来访问对象属性。例如:${user[user-name]} 是正确的,但 ${user.user-name}是错误的!
4、隐含对象
隐含对象 |
描述 |
pageScope |
page 作用域内的属性值的集合 |
requestScope |
request 作用域内的属性值的集合 |
sessionScope |
session 作用域内的属性值的集合 |
applicationScope |
application 作用域内的属性值的集合 |
param |
Request 对象的参数,字符串 |
paramValues |
Request对象的参数,字符串集合 |
header |
HTTP 信息头,字符串 |
headerValues |
HTTP 信息头,字符串集合 |
initParam |
包含Servlet上下文初始参数名和对应值的集合 |
cookie |
包含每个cookie名和值的集合 |
pageContext |
用于访问JSP的内置对象 |
1)页面上下文对象 pageContext
①作用:用于访问JSP内置对象(如request、response、out、session、exception、page,但不能用于获取application、config、pageContext对象)和servletContext。获取这些内置对象后,即可获取其属性。这些属性与对象的 getXXX() 方法对应,使用时去掉方法名中的get,将首字母改为小写即可,例如 request 对象的 getRequestURL 可以写为:
${pageContext.request.requestURL}
其它访问JSP内置对象的例子:${pageContext.out}、${pageContext.response}……
2)param 和 paramValues 对象的应用
①作用:param对象用于获取请求参数的值;如果一个参数名对应多个值时,需要使用paramValues对象获取请求参数的值。
②返回结果:param对象返回的结果为字符串(若指定的参数不存在,返回的不是null而是空字符串);paramValues对象返回的结果是数组。
③使用示例:
- param:
<input type="text" name="user" > <%-- 获取user文本框中的值 --%> ${param.user}
- paramValues:
<input name="subject" type="checkbox" value="Java基础">Java基础 <input name="subject" type="checkbox" value="Linux基础">Linux基础 <input name="subject" type="checkbox" value="JSP Web学习">JSP Web学习 <%-- 表单提交后,获取subject的值 --%> ${paramValues.subject[0]} ${paramValues.subject[1]} ${paramValues.subject[2]}
3)cookie对象
①作用:cookie对象用于获取Cookie对象。如果在cookie中已经设定一个名称为 username 的值,那么可以使用 ${cookie.username} 来获取该 Cookie对象。但是如果想要获取该Cookie中的值,需要使用Cookie对象的value属性。
②使用示例:
<% Cookie cookie = new Cookie("username", "itzcn"); response.addCookie(cookie); %> <%-- 获取Cookie对象cookie名称为username的值 --%> ${cookie.username.value}
4)用于访问作用域范围的隐含对象:pageScope、requestScope、sessionScope、applicationScope
①作用:应用这4个隐含对象指定要查找标示符的作用域后,系统将不再按照默认顺序(page、request、session、application)来查找相应的标示符。这4个隐含对象只能用来取得指定范围内的属性值。
②使用示例!:
<% request.setAttribute("a", "hello EL!"); session.setAttribute("a", "hello JSP!"); %> <%-- 如果不指定变量所在的作用域,则系统默认按照顺序page、request、session、application来查找对应的标示符--%> ${a} ${requestScope.a} ${sessionScope.a}