EL 表达式(Expression Language)
- 语法 ${EL 表达式} 例如 ${username}
EL 操作符
- 操作符 “.” 获取对象的属性,例如:${news.title}
- 操作符”[]” 获取对象的属性,例如:${news[“title”]}
- ${news.title} 等价于 ${news[“title”]}
- 获取集合中的第一个对象的 title 属性
- 例如:${news[0].title}
EL 表达式严格“区分”大小写!!!大小写!!!大小写!!!
为了 避免 JSP 混淆运算符和页面关键字,很多运算符都有代替写法
- == 等价于 eq 例如:${ 5 == 6 } 和 ${ 5 eq 6 }
- != 等价于 ne 例如:${ 5 != 6 } 和 ${ 5 ne 6 }
- >= 等价于 ge 例如:${ 5 >= 6 } 和 ${ 5 ge 6 }
- <= 等价于 le 例如:${ 5 <= 6 } 和 ${ 5 le 6 }
- > 等价于 gt 例如:${ 5 > 6 } 和 ${ 5 gt 6 }
- < 等价于 lt 例如:${ 5 < 6 } 和 ${ 5 lt 6 }
- ? 条件运算符 例如:${student.sex eq 1 ? ‘男’ : ‘女’}
- empty 判断对象是否为空 ${ empty news } 如果 news 为 null 则返回 true 不为空返回 false
- && 例如:${ 5 eq 6 && 4 eq 4 } // false 判断两个 Boolean 表达式,都为真则返回 true ,有一个为假则返回 false
- || 例如:${ 5 eq 6 || 4 eq 4 } // true 判断两个 Boolean 表达式,有一个为真则返回 true ,都为假则返回 false
EL 表达式常用写法,判断对错
- 错误写法一${pream.password1} == ${pream.password2}
- 解释:运算符不能放在 ${} 外使用
- 错误写法二${ ${pream.password1} == ${pream.password2} }
- 解释:EL 表达式不能嵌套 EL 表达式使用
- 正确写法:${pream.password1 == pream.password2}
- 解释:两个值的判断,同时写在同一个表达式里边即可
EL 表达式的常用功能示例
- 取得 JavaBean 对象的属性 ${news.title}
- 取得数组、List、Map类型对象的元素
- 例如:获取对象集合中的第一个对象元素 ${list[0]}
- 使用各类运算符对原始数据进行简单处理
- 例如:计算分页总数 ${totalRecordCount/pageSize}
- 屏蔽一些常见的异常(数据对象找不到也不会报500 NullPointerExcerption) ${username}
- 能实现简单的自动类型转换
- ${news} 相当于 (News)request.getAttribute(“true”)
EL 访问作用域
- 设置属性对象到内置对象 request 中
- request.setAttribute(“news”,news)
- 两种方式取数据
- Java 小脚本:request.getAttribute(“news”,news);
- 使用 EL 表达式
- ${ news } 注意:遍历依次读取 4 种作用域 :pageContext \ request \ session \ application
- 任何一个作用域中只要有该属性,都可以显示读取或者直接指定固定作用域对象内进行查找,指定作用域内没有,就真的没了例如:${ requestScope.news } 该 EL 表达式只搜索 request 对象的作用域中,是否有 news 对象「」
- ${requestScope.news} 等价于 <% request.getAttribute(“news”);%>
- ${sessionScope.news} 等价于 <% session.getAttribute(“news”);%>
- ${applicationScope.news} 等价于 <% application.getAttribute(“news”);%>
- ${pageScope.news} 等价于 <% pageContext.getAttribute(“news”);%>