一、概述

什么是EL表达式?

EL表达式的全称是:Expression Language。是表达式语言。
语法:${表达式}

EL表达式的作用是什么?

EL表达式主要是代替jsp页面中的表达是脚本在jsp页面中进行数据的输出。
因为EL表达式在输出数据的时候,要比jsp的表达式脚本简洁很多。

注意:
jsp默认支持el表达式的。如果要忽略el表达式
1. 设置jsp中page指令中:isELIgnored=”true” 忽略当前jsp页面中所有的el表达式
2. ${表达式} :忽略当前这个el表达式

EL表达式例子

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <%
  8. request.setAttribute("key","值");
  9. %>
  10. jsp表达是脚本输key的值是:<%=request.getAttribute("key")%><br/>
  11. EL表达式输出key值是:${key}
  12. </body>
  13. </html>

客户端:

jsp表达是脚本输key的值是:值 EL表达式输出key值是:值

但是当把表达式脚本的key改成key1的时候,jsp输出的是null,EL是空字符串;
EL空字符串的好处是用户看到空的时候就知道没有,如果是null客户可能不知道。

使用

1.获取值

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

域名称: pageScope —> pageContext requestScope —> request sessionScope —> session

applicationScope —> application(ServletContext)

语法:
(1)${域名称.键名}:从指定域中获取指定键的值
举例:在request域中存储了name=张三
获取:${requestScope.name}
(2)${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

获取对象、List集合、Map集合的值
(1)对象:本质上会去调用对象的getter方法
${域名称.键名.属性名}
(2)List集合:
${域名称.键名[索引]}
(3)Map集合:
${域名称.键名.key名称}
${域名称.键名[“key名称”]}

2.运算

运算符:
算数运算符: +、 - 、*、 /或者div 、%或者mod
比较运算符: >、 <、 >=、 <=、 == 、 !=
逻辑运算符: &&(and) ||(or) !(not)
空运算符:
empty :为空输出false
功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

3.隐式对象

EL表达式中有11个隐式对象,是EL表达式中自己定义的,可以直接使用

变量 类型 作用
pageContext PageContextImol 可以获取jsp九大内置对象
pageScope Map 可以获取pageContext域中的数据
requestScope Map 可以获取request域中的数据
sessionScope Map 可以获取session域中的数据
applicationScope Map 可以获取ServletContext域中的数据
param Map 一个请求参数值
paramValues Map 一组请求参数值,多个数据
header Map 一个请求头值
headerValues Map 一组请求头值
initParam Map 获取web.xml中配置的上下文参数
cookie cookie Map 获取当前请求的Cookie信息


pageContext:
获取jsp其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录