ELEL( Language)是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。 EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。 EL表达式出现的目的是为了使JSP写起来更加简单,让jsp的代码更佳简化。 EL表达式仅仅用来读取数据,而不能对数据进行修改。 使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。
EL表达式,它能够极大的简化JSP页面上数据的显示。他就是被用来优化数据读取操作的。 EL表达式的最主要功能就是从域对象中获取数据,并且输出 基本语法EL表达式总是放在{}中,而且前边有一个$作为前缀 第一点:当EL表达式输出的key不存在的时候,输出的是空串”” 第二点:EL表达式在域对象中搜索属性的顺序是pageContext,request,session,application 获取域中的对象可以直接使用对象名,这时按照从小到大的顺序依次向上查找。如获取域中名字为user的对象 获取对象的属性值可以直接通过“对象.属性名”
获取Map中属性时可以直接通过属性的key 在指定域中获取属性
运算符语法:${ 运算表达式 } 算数运算符 | 说 明 | 范 例 | 结果 |
---|
+ | 加法 | ${ 12 + 18 } | 30 | - | 减法 | ${ 18 - 8 } | 10 | * | 乘法 | ${ 12 * 12 } | 144 | / 或div | 除法 | ${ 144 / 12 } 或 ${ 144 div 12 } | 12 | % 或mod | 取模 | ${ 144 % 10 } 或 ${ 144 mod 10 } | 4 |
关系运算符 | 说 明 | 范 例 | 结果 |
---|
== 或 eq | 等于 | ${ 5 == 5 } 或 ${ 5 eq 5 } | true | != 或 ne | 不等于 | ${ 5 !=5 } 或 ${ 5 ne 5 } | false | < 或 lt | 小于 | ${ 3 < 5 } 或 ${ 3 lt 5 } | true | > 或 gt | 大于 | ${ 2 > 10 } 或 ${ 2 gt 10 } | false | <= 或 le | 小于等于 | ${ 5 <= 12 } 或 ${ 5 le 12 } | true | >= 或 ge | 大于等于 | ${ 3 >= 5 } 或 ${ 3 ge 5 } | false |
逻辑运算符 | 说 明 | 范 例 | 结果 |
---|
&& 或 and | 与运算 | ${ 12 == 12 && 12 < 11 } 或 ${ 12 == 12 and 12 < 11 } | false | || 或 or | 或运算 | ${ 12 == 12 || 12 < 11 } 或 ${ 12 == 12 or 12 < 11 } | true | ! 或 not | 取反运算 | ${ !true } 或 ${not true } | false |
empty运算符empty运算是判断一个对象或者集合是否为空。返回boolean值。 三元运算符“.”和[]运算符“.” 运算符,可以取JavaBean对象的属性值,也可以取map中某个key的值。 [] 中括号,可以获取顺序集合中指定索引的元素,也可以获取特殊key的值。 当我们在map对象中存放一些特殊的key的时候,比如说,key字符串中含有 “.” 、“+” 、“-” 、“*” 、“/” 、 “%” 等 这些运算符的时候,会让el解析器产生歧义的时候。我们可以使用[‘key’]中括号加引号包含key的形式取值。 []中括号,可以获取有序集合(数组和List集合)中的给定索引的元素
11个隐含对象这些对象可以在EL表达式中直接使用。 隐含对象 | 类型 | 说明 |
---|
pageContext | javax.servlet.jsp.PageContext | 就是JSP页面中的pageContext对象 | pageScope | java.util.Map<String,Object> | Page范围属性名和属性值 | requestScope | java.util.Map<String,Object> | Request范围属性名和属性值 | sessionScope | java.util.Map<String,Object> | Session范围属性名和属性值 | applicationScope | java.util.Map<String,Object> | Web应用范围属性名和属性值 | param | java.util.Map<String,String> | 对应一个请求参数 | paramValues | java.util.Map<String,String[]> | 对应一组请求参数 | header | java.util.Map<String,String> | 请求头 | headerValues | java.util.Map<String,String[]> | 请求头返回字符数组 | cookie | java.util.Map<String, Cookie> | 获取某个cookie对象 | initParam | java.util.Map<String, String> | 获取web.xml中<context-param>初始化参数 |
获取域数据的顺序在执行时,会用标识符为关键字分别从page、request、session、application四个域中查找对应key的对象。找到则返回相应数据。找不到则返回空串。(注意,不是null,而是空字符串) 获取javaBean普通属性、数组属性、List集合属性,map属性中的数据 ${ user.username } // 获取user对象中。username属性值 ${ list[下标] } // 访问有序集合(或数组)中给定索引的元素${ map.key } // 访问map集合中指定key的属性值${ map[“key”] } // 访问特殊字符串的key的属性值 一定要记住一点,EL表达式获取数据的时候,是通过对应的get方法获取的 BeanUtils 是通过set方法设置值 pageContext访问Jsp中内置对象<% // 先把request对象放到pageContext域对象中pageContext.setAttribute(“req”,request);%>//然后EL表达式代码改为工程名(上下文路径):${ req.contextPath } 其他隐含对象<body>参数username的值:${ param.username }<br/>参数hobby的值:${ paramValues.hobby[0] }<br/>请求头Accept-Language的值:${ header["Accept-Language"] }<br/>请求头Accept的值:${ headerValues["Accept"][0] }<br/>cookie的key = ${ cookie.JSESSIONID.name } : value = ${ cookie.JSESSIONID.value } <br/>上下文参数:${ initParam.username }<br/></body>
|