6. EL表达式
jsp2.0加入,可用在文本或jsp标签中。用来代替 <% %> 和 <%= %>,可用在可以使用jsp表达式的标签属性中。
<li>名字: ${name}</li>
<jsp:include page="${xxx}"/>
<c:out value="${xxx}"/>
(1). 格式:
${ } (例:${msg})
(2). 取值:
EL表达式只能获取四个作用域的的值
a. String取值(${作用域.作用域键})
${pageScope.param},
${requestScope.param},
${sessionScope.param},
${applicationScope.param}
注释:jsp不识别el表达式,原文输出是因为Servlet是3.0关闭了el表达式的识别。可以在jsp中加<%@ isELIgnored="false" %>来开启el表达式,版本可以通过web.xml的<web-app>查看。我是4.0版加了开启后 会输出空的{},原因未知,通过将${param}改为带作用域${pageScope.param}解决。
b. List取值(${作用域.作用域键[下标]})
${requestScope.params[0]}
c. Map取值(${作用域.作用域键.集合键},${作用域.作用域键["集合键"]})
${requestScope.maps.key2}
${requestScope.maps["key3"]}
d. Object取值(${作用域.作用域键.类对象项目名})
${request.user.name}
${request.user.age}
(3). 判断
a. 取boolean值
判空:${ Empty param0}
非空:${ !Empty param0}
比较:${ 1 > 2 },${ "a" eq "a" }, ${ 1 > 2 || 1 < 2 }
注释:上面结果都会以 true 或 false 的字符串形式输出到浏览器
算数运算:
+ : ${6 + (-2)},- :${6 - 1},*:${2 * 3},/ 或 div:${4/2},${4 div 2},% mod:${20%5} ${20 mod 5}
关系运算:返回boolean类型
等于:${3 == 5} ${ 3 eq 5}
不等于:${3 != 5} ${3 ne 5}
小于:${ 3 < 5} ${ 3 lt 5}
大于:${ 3 > 5} ${3 gt 5}
小于等于:${3 <= 5} ${ 3 le 5 }
大于等于:${3 >= 5} ${ 3 ge 5}
逻辑运算:
&& and , || or , ! not
${ (9>=4)&&(3<2) } ${ (9>=4)and(3<2) }
${ (9>=4)||(3<2) } ${ (9>=4)or(3<2) }
${ ! 5>=6 } ${ not 5>=6 }
三元运算:
${ 5*5>2? 1 : 0}, ${2+5=3? "xx":"yy"}
判空:
${empty xx} // 判空字符串,空数组,空集合,空map,null
属性访问符:
${对象.属性} ${map.key}
${对象["属性"]} ${map["key"]} ${list[下标]} //单双引号一样
作用域变量:
el表达式无属性访问,不抛出异常,返回空字符串。
el可访问嵌套属性 ${a.b.c} // jsp:useBean无法实现。
el表达式隐含变量:
pageContext // jsp的pageContext对象,可取 请求url, sessionid等
param // 请求参数的字符串map。//相当于req.getParameter("xx")
paramValues // 请求参数字符串数组map。 xx[0] req.getParameterValues("xx")
header // 请求头字符串的map
headerValues // 头字符串的map
initParam // servletContet 的参数名与值,
cookie // ${ cookie.cookie名.value }
pageScope // page作用域
requestScope // request作用域
sessionScope // session作用域
applicationScope // application作用域