JSP之EL表达式
一、概念
1.是什么
之前的 JSP 页面中,我们经常使用 JSP 表达式来输出变量或者页面之间传递的参数,大大降低了页面的可读性。
为了简化 JSP 页面,JSP 2.0 新增了 EL(Expression Language)表达式语言。EL 提供了更为简洁、方便的形式来访问变量和参数,不仅可以简化 JSP 页面代码,还会使开发者的逻辑变得更加清晰 。
2.EL使用条件
①Web服务器支持Servlet2.4/JSP2.0
②EL表达式未禁用:
禁用方法:
\
<%@ page isELIgnored=“true”%>
web.xml中配置< el-ignored>元素
3.EL存取范围
默认从page中找,然后依次为request,session,application,找到返回值,找不到返回null。
4.EL的特点
①可与JSTL及JavaScript语句结合使用
②自动执行类型转换
③直接访问JavaBean中的属性
●嵌套属性
●集合对象
④可执行运算
⑤可获得命名空间(的对象)
⑥除0没有异常
⑦可访问作用域对象
⑧扩展函数可以与java里的静态方法执行映射
二、语法
1.EL表达式的语法
EL 表达式语法如下:
${EL表达式}
EL 表达式语法以${
开头,以}
结束,中间为合法的表达式。
示例:
`${param.name}` 表示获取参数 name 的值,它等同于 `<%=request.getParameter('name') %>`。从形式和语法上可以看出,EL 表达式简化了 JSP 原有的表达式。在实际开发中,EL 表达式也是经常使用的方式。
2.运算符
(1)存取运算符:
'[]‘运算符可以获取数组的指定元素,但用’.'运算符不可以
'[]'运算符可以获取List集合中的元素
'[]'运算符可获取Map集合中的指定元素
(.
和[ ]
是 EL 中最常用的运算符,用来访问 JavaBean 中的属性和隐式对象的数据。一般情况下,.
用来访问 JavaBean 属性或 Map 类型的值,[ ]
用来访问数组或者列表的元素。)
(2)比较运算符:
比较运算符用来实现两个表达式的比较,进行比较的表达式可以是数值型或字符串。
EL比较运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
== 或 eq | 等于 | ${6==6} 或 6 e q 6 < b r / > {6 eq 6}<br/> 6eq6<br/>{“A”=“a”} 或 ${“A” eq “a”} | true false |
!= 或 ne | 不等于 | ${6!=6} 或 6 n e 6 < b r / > {6 ne 6}<br/> 6ne6<br/>{“A"!=“a”} 或 ${“A” ne “a”} | false true |
< 或 lt | 小于 | ${3<8} 或 3 l t 8 < b r / > {3 lt 8}<br/> 3lt8<br/>{“A”<“a”} 或 ${“A” lt “a”} | true true |
> 或 gt | 大于 | ${3>8} 或 3 g t 8 < b r / > {3 gt 8}<br/> 3gt8<br/>{“A”>“a”} 或 ${“A” gt “a”} | false false |
<= 或 le | 小于等于 | ${3<=8} 或 3 l e 8 < b r / > {3 le 8}<br/> 3le8<br/>{“A”<=“a”} 或 ${“A” le “a”} | true true |
>= 或 ge | 大于等于 | ${3>=8} 或 3 g e 8 < b r / > {3 ge 8}<br/> 3ge8<br/>{“A”>=“a”} 或 ${“A” ge “a”} | false false |
(3)逻辑运算符:
逻辑运算符两边的表达式必须是布尔型(Boolean)变量,其返回结果也是布尔型(Boolean).
EL逻辑运算符 | 说明 | 范例 | 结果 |
---|---|---|---|
&& 或 and | 与 | ${2>1&&3<4 } 或 ${2>1and3<4 } | true |
||或 or | 或 | ${2<1||3>4} 或 ${2<1or3>4} | false |
! 或 not | 非 | ${!(2>4)} 或 ${not (2>4)} | true |
三、EL隐含对象
11个对象:
从以上方法可以看出,EL 表达式可以输出 4 种属性范围的内容。如果在不同的属性范围中设置了同一个属性名称,则按照 page、request、session、application 的顺序依次查找。我们也可以指定要取出哪一个范围的变量,例如:${pagesScope.name}
,表示取出 page 范围的 name 变量。
类似于JSP内置对象,直接用对象名操作
—PageContext是JavaBean对象
●PageContext 用它,可以访问JSP内置对象
如:可以获取request对象(但不可通过pageContext对象获取保存在request范围内的变量)
—其他均为Map类对象
●环境信息中的隐含对象(6个)
—param.paramValues
—header.headerValues
—cookie
—initParam
●作用域范围对象(4个)
—pageScope
—requestScope
—sessionScope