1 基本概念
EL(Expression Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据 并输出
2 主要功能
依次访问pageContext、request、session和application作用域对象存储的数据
获取请求参数值
访问Bean对象的属性
访问集合中的数据
输出简单的运算结果
3 访问内置对象的数据
(1)访问方式
<%=request.getAttribute(“ varName”)%>
用EL实现: ${ varName }
以前的方式:
现在的方式:
例子2 - 属性名都一样
例子2 - 输出结果
输出了pageContext对象中的属性值,原因见下图
(2)执行流程
4 访问请求参数(从前台页面传过来的)的数据
在EL之前
request.getParameter(name);
request.getParameterValues(name);
在EL中
param:接收的参数只有一个值
paramValues:接受的参数有多个值
<!-- 获取指定参数的数值 -->
${param.name}
<!-- 获取指定参数中指定下标的数值 -->
${paramValues.hobby[0]}
例子
以前的方式:
现在的方式:
5 访问Bean对象的属性
(1)访问方式
方式一: $ { 对象名 . 属性名 },例如:${user.name}
方式二: $ { 对象名 [“属性名”] },例如:${user["name"]}
(2)主要区别
属性名中包含一些特殊字符,如: . 或 ,等并非字母或数字的符号,就一定要使用 [ ] , 而不是.的方式
使用[]的方式可以动态取值,具体方式如下:
<%
request.setAttribute(“prop”,“age”);
%>
<!-- 相当于表达式中写一个变量 -->
${ user[prop] }
(3) 例子
1 - 创建Bean (Person类)
2 - 设置 & 获取 Bean 中的数据
例子2 - 动态取值
6 访问集合中的数据
(1) 方法
<!-- student为ArrayList类型的对象 -->
${student[0].name}
(2) 例子
例子1
例子2
7 常用的内置对象
类别 | 标识符 | 描述 |
JSP | pageContext | PageContext 处理当前页面(的数据) |
作用域 | pageScope | Map类,同页面作用域,属性名称和值有关 |
requestScope | Map类,同请求作用域,属性名称和值有关 | |
sessionScope | Map类,同会话作用域,属性名称和值有关 | |
applicationScope | Map类,同应用程序作用域,属性名称和值有关 | |
请求参数 | param | Map类,根据名称存储(前端页面带过来的)请求参数的值 |
paramValues | Map类,把请求参数的所有值作为一个String数组来存储 | |
请求头 | header |
Map类,根据名称存储请求头主要值 |
headerValues | Map类,把请求头的所有值作为一个String数组来存储 | |
Cookie | cookie | Map类,根据名称存储请求附带的cookie |
初始化参数 | initParam | Map类,根据名称存储Web应用程序上下文初始化参数 |
8 常用的运算符
(1)常用的算术运算符
算术运算符 | 说 明 | 范 例 | 运算结果 |
+ | 加 | ${1+2} | 3 |
- | 减 | ${2-1} | 1 |
* | 乘 | ${2*3} | 6 |
/ 或 div | 除 | ${16/5}或${16div5} | 3.2 |
% 或 mod | 取余 | ${16%5}或${16mod5} | 1 |
例子
(2)常用的关系运算符
关系运算符 | 说 明 | 范 例 | 运算结果 |
==或eq | 等于 | ${1==2}或${1 eq 2} | false |
!= 或ne | 不等于 | ${2!=1}或${1 ne 2} | true |
< 或lt | 小于 | ${2<3}或${2 lt 3 } | true |
> 或 gt | 大于 | ${16>5}或${16 gt 5} | true |
<= 或 le | 小于等于 | ${16<=5}或${16 le 5} | false |
>= 或 ge | 大于等于 | ${16>=5}或${16 ge 5} | true |
(3)常用的逻辑运算符
逻辑运算符 | 说 明 | 范 例 | 运算结果 |
&& 或 and | 与运算 | ${true&&true}或${true and true} | true |
|| 或or | 或运算 | ${true||false}或${true or false} | true |
! 或not | 非运算 | ${!true}或${not true } | false |
例子
(4)条件运算符
${条件表达式? 语句1 : 语句2}
(5)验证运算符
${empty 表达式}
返回布尔值判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值。
例子: