JSP 表达式语言 (EL)

JSP 表达式语言(Expression Language,EL)是一种简化 JSP 页面中数据访问的轻量级语言,核心目的是替代 JSP 表达式标签(<%= ... %>)和部分脚本段代码,以更简洁的语法读取不同作用域(page、request、session、application)中的数据,无需编写复杂的 Java 代码。

核心特点:

  • 语法简洁:核心格式为${表达式},支持运算符、隐式对象、数据访问;
  • 自动类型转换:无需手动转换字符串与基本类型(如${10 + "20"}结果为 30);
  • 空值安全:访问不存在的属性 / 变量时不会抛出空指针异常,返回空字符串("");
  • 与 JSTL 配合:常结合 JSTL 标签(如<c:forEach>)实现逻辑控制,彻底替代脚本段。

核心用法:

(1)访问作用域数据
1
2
3
4
5
6
7
8
9
10
11
12
<%-- 读取request作用域的name属性(等价于request.getAttribute("name")) --%>
${requestScope.name}

<%-- 省略作用域前缀:EL会按page→request→session→application顺序查找 --%>
${name}

<%-- 读取JavaBean属性(自动调用getter方法)--%>
${user.username} <%-- 等价于user.getUsername() --%>

<%-- 读取集合/数组 --%>
${list[0]} <%-- 列表第一个元素 --%>
${map.key} <%-- Map的key对应值 --%>
(2)运算符支持
1
2
3
4
${10 + 20} <%-- 算术运算:30 --%>
${age > 18} <%-- 比较运算:true/false --%>
${name == null || name == ""} <%-- 逻辑运算 --%>
${empty list} <%-- 空值判断:列表为空/不存在时返回true --%>
(3)EL 隐式对象(补充)

EL 也提供隐式对象,专注于数据访问,如pageScoperequestScopesessionScopeapplicationScope(作用域对象),param(获取请求参数,等价于 request.getParameter ())、paramValues(获取多值参数)等。

核心优势:

彻底简化数据读取逻辑,避免 JSP 页面中充斥<%= request.getAttribute(...) %>这类冗余代码,让页面更简洁、易维护。