1. EL 表达式的概念
EL(Expression Language),表达式语言
2. EL 表达式的作用
它可以替换 JSP 页面中 Java 代码的编写,从而简化 JSP 页面
如:
<div><%= request.getAttribute("checkCode_error") == null ? "" : request.getAttribute("checkCode_error")%></div>
可替换为:
<div>${requestScope.checkCode_error}</div>
3. EL 表达式的语法
-
语法
${表达式}
注意:JSP 默认支持 EL 表达式,会自动解析 EL 表达式并展示到页面上,如:
${3 > 4}
页面上会显示:false
-
如果要忽略 EL 表达式,有两种方式
-
忽略当前 JSP 页面中所有的 EL 表达式
<%@ page isELIgnored="true" %>
-
忽略当前这个 EL 表达式
\${表达式}
-
4. EL 表达式的使用
-
运算
-
运算符
-
算数运算符:+ - * / %
-
比较运算符:> < >= <= == !=
-
逻辑运算符: && || !
-
空运算符:empty
- 功能:用于判断字符串、集合、数组对象是否为 null 或者长度是否为 0
- ${empty list}:list 对象为 null 或者长度为 0 时,返回 true
-
-
-
获取值
-
EL 表达式只能从域对象中获取值
-
获取字符串的值语法
-
从指定域中获取指定键的值
${域名称.键名}
-
域名称(按有小到大排列):
- pageScope --> pageContext
- requestScope --> request
- sessionScope --> session
- applicationScope --> application
-
例如:在 request 域中存储了 name=张三
${requestScope.name}
-
-
依次从最小的域中查找是否有该键对应的值,直到找到为止
${键名}
-
-
获取对象、List集合、Map集合的值语法
-
对象
${域名称.键名.属性名}
注意:属性名是 setter 和 getter 方法截取后的产物,如:getUsername() --> Username–> username,如果对象没有对应的 getXXX 方法就获取不到值
-
例如:获取 user 对象的 brithday 属性的月份
${requestScope.user.brithday.month}
注意:month 对应着 birthday 的 getMonth() 方法
-
-
List 集合
${域名称.键名[索引]}
注意:如果索引越界,不会报错,会显示空字符串
-
Map 集合
${域名称.键名.key名称}
-
-
5. EL 表达式的隐式对象
-
隐式对象的概念
在 EL 表达式中可以直接使用的对象,EL 表达式中有11个隐式对象
-
pageContext 对象
pageContext 是一个 EL 表达式的隐式对象,对应 JSP 内置对象中的 pageContext,它可以获取 JSP 其他八个内置对象
如:动态获取虚拟目录
<form action="${pageContext.request.contextPath}/LoginServlet" method="post">