JSP(二) EL表达式

EL表达式简介

EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language)。EL语言的灵感来自于ECMAScriptXPath表达式语言。

EL表达式语言是一种简单的语言,提供了在JSP中简化表达式的方法,目的是为了尽量减少JSP页面中的Java代码,使得JSP页面的处理程序编写起来更加简洁,便于开发和维护。

EL语法

JSP默认支持EL表达式,在JSP中访问模型对象是通过EL表达式的语法来表达。

所有EL表达式的格式都是以${}表示。例如,${ userinfo}代表获取变量userinfo的值。当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。

也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。

作用:替换和简化jsp页面中java代码的编写

语法:${表达式}

忽略页面中所有的EL表达式

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true" %>

忽略当前EL表达式

  • 转义字符\${3 > 4}

EL表达式使用

运算

EL运算符

操作符 描述
. 访问一个Bean属性或者一个映射条目
[ ] 访问一个数组或者链表的元素
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ or div
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& or and 测试逻辑与
|| or or 测试逻辑或
! or not 测试取反
empty 空运算符

empty:用于判断字符串、集合、数组对象是否为null,并且长度是否为0

  • ${empty list}:域中list键对应的值是否为空,长度是否为0
  • ${not empty str}:判断字符串、集合、数组对象是否不为null并且长度>0

获取值

EL表达式只能从域对象中获取值

语法

1. ${域名称键名}:从指定域中获取指定键的值

域名称

pageScope pageContext
requestScope request
sessionScope session
applicationScope application(ServletContext)

JSP(二) EL表达式

举例:在 request域中存储了 name=Mr.Q 获取:${ requestscope.name}

2. ${键名}表示依次从最小的域中查找是否有该键对应的值,直到找到为止

${name}依次从上面四个域中寻找名为name的键(域的范围从小到大)

3. 获取对象、List集合、Map集合的值

  1. 对象:${域名称.键名.属性名}
  • 本质上会去调用对的 getter方法
  1. List集合:${域名称.键名[索引]}

  2. Map集合:

  • ${域名称.键名.key名称}
  • ${域名称.键名["key名称"]}

动态获取虚拟目录

${pageContext.request}

${pageContext.request.contextPath}

等价于response.sendRedirect(request.getContextPath() + "");

【参考文章】