1.EL表达式的定义与功能
EL(Expression Language,表达式语言)是在JSTL 1.0规范中引入的,作为JSTL的组成部分。在JSTL 1.1 规范中,JSP 2.0 容器已经能够独立的理解任何EL表达式,EL可以独立的出现在JSP页面的任何角落
EL可以用来取代难以维护的Java 脚本或笨拙的<jsp:userBean>标签,
2.EL的功能
- 与<jsp:getProperty />类似
- 简化<jsp:getProperty />
- 精确地访问存储对象
- Bean属性的简略记法
- 点号记法与数组中括号记法
- 对集合的简单访问 对请求参数
- Cookie和其他请求数据的简单访问
- 条件性输出
- 自动类型转换
3.EL的语法
EL 语法很简单,它最大的特点就是使用上很方便,表达起来更简洁
EL表达式都是以${为起始、以}为结尾的
${ EL表达式 } EL表达式不区分字母的大小写。可以访问对象的属性。使用EL表达式之前,必须将对象保存到作用域中。
4.EL表达式中的常量
- EL表达式中的常量包括布尔常量、整型常量、浮点数常量、字符串常量和NULL常量
- 布尔常量,用于区分事务的正反面,即true或false。
- 整型常量,与Java中定义的整型常量相同。
- 浮点数常量,与Java中定义的浮点数常数相同
- 字符串常量,是用单引号或双引号引起来的一连串字符。
- NULL常量,用于表示引用的对象为空。页面什么都不会输出。
- 作为表现层的JSP页面的错误处理,往往会对用户有直观的体验为此EL提供了比较友好的处理方式:不提供警告,只提供默认值和错误,默认值是空字符串
5.EL表达式访问Servlet中的共享数据
EL表达式访问通过setAttribute方法存储在PageContext、HttpServletRequest、HttpSession或ServletContext中的对象
EL 会依次从 PageContext、HttpServletRequest、HttpSession 和 ServletContext 对象中 查找名为 name 的属性。如果找到该属性,则调用它的 toString()方法并返回调用的结果。 如果没有找到任何属性,则返回空字符串
6.JSP页面使用EL实例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
${3+2}
${3*2}
${3>2}
${!true}
</body>
</html>
运行结果:

JSP2.0的页面默认是允许使用EL表达式的,如果要在个别页面内禁用EL
<%@ page isELIgnored= " true "%>
7.EL隐式对象
EL总共有11个隐式对象,分为5大类:
- JSP隐式对象
- 作用域访问隐式对象
- 参数访问隐式对象
- HTTP头访问隐式对象
- 初始化参数访问隐式对象
|
类别 |
对象标识符 |
作用 |
|
JSP |
pageContext |
与页面相对应的页面上下文对象 |
|
作用域 |
pageScope |
页面作用域里属性/值的集合(Map) |
|
requestScope |
请求作用域里属性/值的集合(Map) | |
|
sessionScope |
会话作用域里属性/值的集合(Map) | |
|
applicationScope |
应用程序作用域属性/值的集合(Map) | |
|
请求参数 |
param |
请求参数/单值字符串的集合(Map) |
|
paramValues |
请求参数的所有值作为String 数组存储的集合(Map) | |
|
请求头 |
header |
请求头名称/单值字符串的集合(Map) |
|
headerValues |
请求头名称/多值作为String 数组存储的集合(Map) | |
|
Cookie |
cookie |
所有cookie组成的集合(Map) |
|
初始化参数 |
initParam |
Web 应用程序上下文初始化参数的集合(Map) |
8.EL表达式的算数运算符
- +和 -:常规的加法和减法运算符
- *和/:常规的乘法和除法运算符
- %和mod:%(或与之等同的mod)运算符用来计算模数(余数),和Java变程语言中的%相同
|
表达式 |
计算结果 |
|
${3+2} |
5 |
|
${3-2} |
1 |
|
${3*2} |
6 |
|
${3/2} |
1.5 |
|
${3 mod 2} |
1 |
9.EL表达式的逻辑运算符
- && (and) :逻辑与,运算符两边的表达式同时为真,则结果为真。其它情况结果为假
- ||(or):逻辑或,运算符两边的表达式同为假,则结果为假。只要有一个是真,则结果为真
- !(not):非,取反。运算符右边的表达式为真时,取反则为假。
|
表达式 |
计算结果 |
|
${true && true} or ${true and true} |
true |
|
${true && false} or ${true and false} |
false |
|
${true || true} or ${true or true} |
true |
|
${true || false} or ${true or false} |
true |
|
${ !true} or ${not true} |
false |
10.EL表达式的空值判断运算符 :empty
如果这个运算符的参数为null,空字符串,空数组,空Map或空集合,则返回true,否则返回false
|
表达式 |
计算结果 |
|
<%pageContext.setAttribute(“x",null);%> | |
|
${empty x} |
true |
11.EL表达式中的条件性输出
三目运算符:
- [条件表达式] ? [结果为真选择] : [结果为假选择]
- EL表达式通过使用三目运算符可以实现复杂的逻辑处理
|
表达式 |
计算结果 |
|
${1>2 ? 1 : 2} |
2(输出最大数字) |
|
${1<2 ? 1 : 2} |
1(输出最小数字) |
|
${1>2 ? (3<5?’a’:’b’) : (3>5?’c’:’d’) } |
d |
EL表达式是JSTL的一部分,用于取代Java脚本和复杂标签,提供简洁的属性访问和类型转换。它可以访问Bean属性、集合、请求参数,并支持条件性输出、算数和逻辑运算。在JSP页面中,EL能访问不同作用域的数据,并有11个隐式对象。此外,EL还包括空值判断和三目运算符,用于条件性输出。

208

被折叠的 条评论
为什么被折叠?



