EL表达式
EL表达式就是为替换<%=%>页面输出的
EL表达式和<%=%>有一丢丢区别,EL表达式只能取WEB域中的值
九个内置对象:
WEB域:
page/pageContext 只是在当前页面有效
request 在一次请求当中有效
session 在一次会话当中有效
application 在整个服务器当中有效
setAttribute(存值) getAttribute(取值)
非WEB域: response,out,exception,config
当${key}取值的时候,如果是有很多相同的web域存了相同的key,那么它会从最小的范围开始查找,找到之后即可返回,不在往下继续查找!
config
下面介绍一下EL表达式的相关内容:
(1).与 [ ] 运算符
EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user["sex"]}
. 和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }
上述是不正确的方式,应当改为:${user["My-Name"] }
(2) 我们来考虑下列情况:
${sessionScope.user[data]}
此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,如后台存在Map,类,数组等之类的数据就可以用上述的方法来做,但. 无法做到动态取值。
(2)算术运算符
+ 注意:在EL表达式中的‘+’只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。 例如:${6+6} - 例如:${4-3} * 例如:${4*3} / 例如:${9/3} 注意到表达式语言还支持div、mod等运算符。而且表达式语言把所有数值都当成浮点数处理,所以3/0的实质是3.0/0.0,得到结果应该是Infinity。
2.关系运算符> gt 例如:${8>9} >= ge 例如:${45>=9} < lt 例如:${4<9} <= le 例如:${9<=8} == eq 例如:${4==4} != ne 例如:${4!=3}注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2}
或者
${ ${param.password1 } = = ${ param.password2 } }
而应写成
${ param.password1 = = param.password2 }
3.逻辑运算符&& and 例如:${false && false} || or 例如:${true || false} ! not 例如:${!true}相当于${false}4.三元运算符? : 例如:${3>2?'是':'不是'}在EL表达式中还有一些特殊运算符:empty 判断EL表达式中的表达式是否为空(NULL,空字符串,空集合),例如:${empty sessionScope.user} . 是我们最常用的,作用相当于执行Bean中的get方法。 例如:${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对象,通过“.”运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值。 [] 作用和“.”运算符的一样,只不过[]运算符可以执行一些不规则的标识符。 例如:${requestScope.user["score-math"]},这个表达式中有不规则的标识符,是不能使用“.”来访问的。在EL表达式中为我们提供了许多内置对象,使我们很方便的得到我们想要的数据:1.从隐式对象中得到数据:pageScope 例如:${pageScope.user.userName} 相当于<%=page.getAttribute("user").getUserName%> requestScope 例如:${requestScope.books} 相当于<%=request.getAttribute("books")%> sessionScope 例如:${sessionScope.lastURL} 相当于<%=session.getAttribute("lastURL")%> applicationScope 例如:${applicationScope.provice} 相当于<%=application.getAttribute("provice")%>2.从请求头中得到数据:header 例如:${header.referer}得到请求过来的URL3.访问JSP页面中的内置对象:pageContext 例如:${pageContext.request}在EL表达式中我们是不能直接使用JSP页面的内置对象,但可以是用pageContext间接得到这些内置对象,再来使用。

浙公网安备 33010602011771号