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”);%>