1.EL简介
- EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象
,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。 - EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。
- EL表达式仅仅用来读取数据,而不能对数据进行修改。
注意:使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。
2.EL基本语法
-
EL表达式总是放在{}中,而且前边有一个$作为前缀。
${EL表达式}
-
获取域中的对象可以直接使用对象名,如获取域中名字为user的对象
${user}
-
获取对象的属性值可以直接通过“对象.属性名”
${user.name}
${user.age}
注意:这里的属性名是get和set方法对应的属性值,并不是对象中的变量名。
比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。 -
获取对象的属性也可以通过“对象[“属性名”]”
${user[“name”]}
${user[“age”]} -
获取Map中属性时可以以直接通过属性的key
${map.key}
${map[key]} -
获取List中属性通过下标获取
${list[index]}
-
在指定域中获取属性
在EL表达式中如果我们直接使用属性名如:${user},它将会在四个域中由小到大依次查找。顺序:pageScope、requestScope、sessionScope、applicationScope。
也可以指定从哪个域中获取:
${ pageScope .user}:当前页面
${requestScope.user}:当前请求
${sessionScope.user}:当前会话
${sessionScope.user}:当前应用
3.EL隐含对象
1.pageContext(常用)
EL中的pageContext和jsp中的pageContext功能一样
作用:获取jsp中的其他8个隐含对象。
例如:
拼接url地址
http://
p
a
g
e
C
o
n
t
e
x
t
.
r
e
q
u
e
s
t
.
s
e
r
v
e
r
N
a
m
e
:
{pageContext.request.serverName}:
pageContext.request.serverName:{pageContext.request.serverPort}${pageContext.request.contextPath}/
2.pageScope(常用)
类型:Map<String,Object>
作用:获取pageContext域中存的属性。
例如:
${pageScope.key}
3.requestScope(常用)
类型:Map<String,Object>
作用:获取request域中存的属性。
例如:
${requestScope.key}
4.sessionScope(常用)
类型:Map<String,Object>
作用:获取session域中存的属性。
例如:
${session.key}
5.applicationScope(常用)
类型:Map<String,Object>
作用:获取application域中存的属性。
例如:
${applicationScope.key}
6.param(常用)
类型:Map<String,String>
作用:获取请求参数。
例如:http://localhost:8080/Project/resource?key=value
${param.key}
7.paramValues
类型:Map<String,String[]>
作用:获取请求参数。
例如:http://localhost:8080/Project/resource?key=val1&key=val2
${param.key} (得到的是一个数组)
8.header
类型:Map<String,String>
作用:获取请求头。
例如:
${header.key}
9.headerValues
类型:Map<String,String[]>
作用:获取请求头。(一个键对应多个值)
10.initParam
类型:Map<String,String>
作用:获取初始化参数。
11.cookie
类型:Map<String,Cookie>
作用:获取Cookie。
注意:EL中的cookie对象和Servlet中的Cookie不一样,EL中的cookie就代表请求报文所有的Cookie的Map,Map的键就是Cookie的name,值就是name对应的Cookie