转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6684424.html
一:EL表达式的用途
1、获取数据:(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
2、执行运算:基本的关系运算、逻辑运算和算术运算
3、获取web开发的内置对象
4、调用Java方法:允许用户开发自定义EL函数,在JSP页面中通过EL表达式调用Java类的方法。
二:JSP页面中开启EL表达式
<%@ page isELIgnored="false"%>:TRUE表示禁止.FALSE表示不禁。
三:EL表达式获取对象数据
EL表达式获取数据语法:"${标识符}"
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
1:获取变量值:${name}
2:获取对象属性:${bean.attribute}
3:获取list、数组等数据结构的元素的属性:${list[i].attribute}
4:迭代遍历数组:<c:forEach var="item" items="${list}"> ${item.attribute} </c:forEach>
5:获取map中值:${map.key}、 ${map[key]}
四:EL表达式隐含对象
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称.XX}:获得对象的某属性值。
序号 | 隐含对象名称 | 描 述 |
1 | pageContext | 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。) |
2 | pageScope | 代表page域中用于保存属性的Map对象 |
3 | requestScope | 代表request域中用于保存属性的Map对象 |
4 | sessionScope | 代表session域中用于保存属性的Map对象 |
5 | applicationScope | 代表application域中用于保存属性的Map对象 |
6 | param | 表示一个保存了所有请求参数的Map对象 |
7 | paramValues | 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[] |
8 | header | 表示一个保存了所有http请求头字段的Map对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”] |
9 | headerValues | 表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”] |
10 | cookie | 表示一个保存了所有cookie的Map对象 |
11 | initParam | 表示一个保存了所有web应用初始化参数的map对象 |
五:EL表达式的运算
1:四则运算
加法运算:${365+24}
减法运算:${365-24}
乘法运算:${365*24}
除法运算:${365/24}
2:关系运算
${num1 op num2}
3:空判断运算
empty(obj):检查obj是否为空
4:[]与.运算符:都可以用来获取对象的数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}