目录
一、EL表达式的概念
- EL(Expression Language),表达式语言,用于简化JSP脚本表达式开发
- EL表达式主要用于访问作用域中的对象、执行算术和逻辑运算、调用JavaBean的方法等
语法格式
java
${表达式}
实例
java
<%--EL表达式简化JSP表达式--%>
<%=10+20%><br>
<%--EL表达式的写法--%>
${10+20}
<%--EL表达式访问变量--变量必须放在作用域张(pageContext,request,session,application)--%>
<%
int a = 6;
int b = 3;
//将要计算的变量放到作用域中
pageContext.setAttribute("a",a);
pageContext.setAttribute("b",b);
//可以将变量放到其他作用域中
%>
<p>
通过JSP表达式做运算:<%=a+b%><br>
通过EL表达式做运算:${a+b}
</p>
二、EL表达式的语法及各种功能
EL运算符
- 算术运算符:+ - * / %
- 关系运算符:== != > < >= <=
- 逻辑运算符:&& || !
- **empty运算符:**判断是否为空
- not empty运算符:判断不为空
- 条件运算符:判断条件 ? value1 : value2
实例
java
<%--EL表达式 算数运算 + - * / %--%>
<%--除法运算不报错,当除数为0时,得到的是Infinity无穷大--%>
<p>
${a+b}<br>
${a-b}<br>
${a*b}<br>
${a/b}<br>
</p>
<%--EL表达式 关系运算 == != < > <= >=--%>
<p>
判断a是否等于b:${a==b}<br>
判断a是否不等于b:${a!=b}<br>
判断a是否小于b:${a<b}<br>
判断a是否大于b:${a>b}<br>
</p>
<%--EL表达式 逻辑运算 && || !!--%>
判断a,b是否同时大于4:${a>4&&b>4}<br>
判断a,b是否有一个大于4:${a>4||b>4}<br>
判断a是否不大于4:${!(a>4)}<br>
java
<%--判断变量对象是否为空 empty
判断变量对象是否不为空 not empty
--%>
<%
Date date =(Date) request.getAttribute("date");
%>
<p>
判断变量a是否为空:${empty a}<br>
判断变量a是否为空:${empty date}<br>
<%--脚本表达式获取data对象的值:<%=date.toString()%>--%>
<%--EL获取的是null值,会显示空白字符串,不会显示异常--%>
EL表达式获取date对象的值:${date.toString()}<br>
</p>
<%--EL表达式 三目运算符 条件判断?表达式1:表达式2--%>
<p>
获取a和b中的最大值:${a>b?a:b}
</p>
三、EL作用域对象
隐含对象

四大作用域对象

实例
java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>EL表达式-四大作用域对象</title>
</head>
<body>
<%--EL表达式四大作用域(pageScope、requestScop、applicationScope)
pageScope:在JSP页面中声明变量,在整个页面有效,除非被删除或重新赋值。--JSP中pageContext对象
requestScope:在同一次请求中有效。--request对象
sessionScope:在同一个会话中有效。--session对象
applicatiionScope:在整个web应用中有效。--application对象
--%>
<%
pageContext.setAttribute("name","张三");
request.setAttribute("age",18);
session.setAttribute("sex","男");
application.setAttribute("address","北京市");
%>
<p>
JSP脚本获取name的值:<%=pageContext.getAttribute("name")%><br>
EL表达式获取name的值:${pageScope.name}<br>
EL表达式省略作用域:${name}<br>
EL表达式从request作用域获取age的值:${requestScope.age}<br>
EL表达式从session作用域获取sex的值:${sessionScope.sex}<br>
EL表达式从application作用域获取address的值:${applicationScope.address}<br>
</p>
<%--EL表达式支持省略作用域对象获取属性值,EL表达式会自动在作用域中查找属性值,按照从小到大的顺序进行查询,如果所有作用域中都获取不到则获取到null值
注意:在实际开发中,不建议省略作用域对象;如果省略,虽然简化代码写法,但是会导致程序执行效率降低。
--%>
<%
// pageContext.setAttribute("str","page");
request.setAttribute("str","request");
session.setAttribute("str","session");
application.setAttribute("str","application");
%>
<p>
EL表达式省略作用域获取str属性值:${str}<br>
</p>
</body>
</html>
java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>El表达式隐含对象param和paramValues-请求参数</title>
</head>
<body>
通过脚本表达式获取请求参数中name的值:<%=request.getParameter("name")%><br>
<%--param队形 等价于request.getParameter()方法--%>
通过EL表达式param对象获取请求参数中name中的值:${param.name}<br>
<%--如果一个请求参数名有多个参数值,则在EL表达式中可以通过paramValues隐含对象获取--%>
通过EL表达式paramValues隐含对象获取请求参数中hobby的所有值:${paramValues.hobby[0]},${paramValues.hobby[1]}
</body>
</html>


四、EL访问对象、集合

实例



