一、概述
什么是EL表达式?
EL表达式的全称是:Expression Language。是表达式语言。
语法:${表达式}
EL表达式的作用是什么?
EL表达式主要是代替jsp页面中的表达是脚本在jsp页面中进行数据的输出。
因为EL表达式在输出数据的时候,要比jsp的表达式脚本简洁很多。
注意:
jsp默认支持el表达式的。如果要忽略el表达式
1. 设置jsp中page指令中:isELIgnored=”true” 忽略当前jsp页面中所有的el表达式
2. ${表达式} :忽略当前这个el表达式
EL表达式例子
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("key","值");
%>
jsp表达是脚本输key的值是:<%=request.getAttribute("key")%><br/>
EL表达式输出key值是:${key}
</body>
</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}:动态获取虚拟目录