EL(Expression Language)表达式语言
EL的基本语法是以${开始,以}结束
为了能够方便地输出数据,EL提供了11个内置对象,其中
- 2个内置对象为了方便输出请求参数
- param用来输出请求参数的值,格式为${param.请求参数名字}
- paramValues:用来获取一对多的参数值,返回一个数组
- 4个内置对象为了方便输出各个范围的属性
- pageScope:页面范围,即pageContext范围
- requestScope:请求范围
- sessionScope:会话范围
- applicationScope:上下文范围
- 2个与请求头有关的内置对象
- header:输出某一个请求头的值。
- headerValues:如果某个请求头的值有多个,则使用headerValues返回一个数组
- 2个其他内置对象:cookie、initParam
- cookie:用来获取cookie的值
- initParam:用来输出上下文参数的值
- 1个特殊的内置对象pageContext
- EL中的pageContext对象可以调用PageContext类中所有符合规范的getXxx方法
EL运算符
- 算术运算符
- ${19+2} <br>
- ${19-2} <br>
- ${19*2} <br>
- ${19/2} <br>
- ${19%2} <br>
- 比较运算符
- = = 或eq表示等于
- != 或ne表示不等于
- < 或lt表示小于
- > 或gt表示大于
- <= 或le表示小于等于
- >= 或ge表示大于等于
- 逻辑运算符
- &&或and表示交集,两个值都是true才返回true。
- ||或or表示并集,两个值只要有一个是true,即返回true。
- !或not表示非
- 其他运算符
- empty运算符:判断值是否为null,如果是null,返回true,否则返回false。
- 关系运算符:${A?B:C}如果A为true,则执行B,如果A为false,则执行C。
- ()运算符:通过()可改变优先级。
EL中提供.和[]两种操作符来获得数据
如下面的两行代码等同:
${requestScope.cust2.custname}<br>
${requestScope["cust2"]["custname"]}
在某些情况下,却只能使用[]。
数组或集合的索引,如:
${paramValues.hobbies[0]}<br>
${requestScope.list[1].custname}<br>
属性值中包括-或者.等非字母或数字的字符。
不合法的EL:${param.user_name}
合法的EL:${param[“user_name”]}
值得注意的是,常量可以使用“”引用,也可以用单引号‘’引用。
属性值不是常量,而是变量。如paramName是变量,其具体值可能是name,可能是date等。
不合法的EL:${param.paramName}
合法的EL:${param[paramName]}
EL除了可以方便的获取数据外,还可以方便地进行数据类型转换
在EL中,对null值不显示,也不会抛出异常
在表达式中,对null值要么直接显示,要么抛出异常