title: 【学习之路】EL表达式学习
draft: true
tags:
- 学习之路
- JavaEE
- EL表达式
categories: - JavaEE
- EL表达式
description: EL表达式学习,如何在JSP中使用EL表达式
cover: ‘https://cdn.jsdelivr.net/gh/CodeZixuan/Blog_Images/EL/image.jpg‘
abbrlink: 44432
date: 2020-10-25 14:44:22
EL表达式的作用
- EL表达式的全称是:Expession Language 是表达式语言
- EL表达式主要是代替JSP页面中的表达式脚本在JSP页面中进行数据的传输,因为EL表达式在输出时比JSP简介很多
EL表达式的格式:${表达式}
EL表达式在输出null值的时候,输出的是空串。JSP表达式输出的是null字符串
EL表达式搜索与数据的顺序
EL表达式主要是在JSP页面中输出数据,主要是输出域对象的数据。当四个域中都有相同的key的数据的时候,EL表达式会按照从小到大的顺序去进行搜索,找到就输出
<body><%request.setAttribut("key", "request");session.setAttribute("key", "session");application.setAttribute("key", "application");pageContext.setAttribute("key", "pageContext");%>${ key }</body>
EL表达式运算符
关系运算符
| 关系运算符 | 说明 |
|---|---|
| == 或 eq | 等于 |
| != 或 ne | 不等于 |
| < 或 lt | 小于 |
| > 或 gt | 大于 |
| <= 或 le | 小于等于 |
| >= 或 ge | 大于等于 |
逻辑运算
| 逻辑运算符 | 说明 |
|---|---|
| &&或and | 与运算 |
| ||或or | 或运算 |
| !或not | 取反 |
empty运算
empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。
以下几种情况为空:
- 值为 null 值的时候,为空
- 值为空串的时候,为空
- 值是 Object 类型数组,长度为零的时候
- list 集合,元素个数为零
- map 集合,元素个数为零
点运算和中括号运算符
点运算,可以输出 Bean 对象中某个属性的值。中括号运算,可以输出有序集合中某个元素的值。并且中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。
<body><%Map<String,Object> map = new HashMap<String, Object>();map.put("a.a.a", "aaaValue");map.put("b+b+b", "bbbValue");map.put("c-c-c", "cccValue");request.setAttribute("map", map);%>${ map['a.a.a'] }${ map["b+b+b"] }${ map['c-c-c'] }</body>
EL表达式的11个隐含对象
- EL表达式中的11个隐含对象,是EL表达式中自己定义的,可以直接使用
| 变量 | 类型 | 作用 |
| —- | —- | —- |
| pageContext | PageContextImpl | 可以获取JSP中的九大内置对象 |
| pageScope | Map
| 可以获取pageContext域中的数据 | | requestScope | Map | 可以获取Request域中的数据 | | sessionScope | Map | 可以获取Session域中的数据 | | applicationScope | Map | 可以获取ServletContext域中的数据 | | param | Map | 可以获取请求参数的值 | | paramValues | Map | 可以获取请求参数值(多个值的时候使用) | | header | Map | 可以获取请求头的信息 | | headerValues | Map | 可以获取请求头信息(可以取多个值) | | cookie | Map | 可以获取当前请求的Cooke信息 |
还有内容没写
JSTL标签库的使用
先导入JSTL标签库的包
使用taglib指令引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp//jstl/core" %>
core核心库使用
<c:set/>set标签可以往域中保存数据
<%--域对象 .setAttribute(key,value);scope 属性设置保存到哪个域page 表示 PageContext 域(默认值)request 表示 Request 域session 表示 Session 域application 表示 ServletContext 域var 属性设置 key 是多少value 属性设置值--%>${ sessionScope.abc } <br><c:set scope="session" var="abc" value="abcValue"/>${ sessionScope.abc }
<c:if />if标签用来做判断
<%--<c:if></c:if> 没有eles结构--%><c:if test="${ 1 > 2 }"><h1>1 不大于 2</h1></c:if>
. <c:choose> <c:when> <c:otherwise>多路判断和switch…case…default接近
<%--<c:choose> <c:when> <c:otherwise> 标签:标签里不能使用 html 注释,要使用 jsp 注释when 标签的父标签一定要是 choose 标签--%><%request.setAttribute("size", 100);%><c:choose><%-- 这是 html 注释 --%><c:when test="${ requestScope.height > 190 }"><h2>大于190</h2></c:when><c:when test="${ requestScope.height > 180 }"><h2>大于180</h2></c:when><c:when test="${ requestScope.height > 170 }"><h2>大于170</h2></c:when><c:otherwise><c:choose><c:when test="${requestScope.height > 160}"><h3>大于 160</h3></c:when><c:when test="${requestScope.height > 150}"><h3>大于 150</h3></c:when><c:when test="${requestScope.height > 140}"><h3>大于 140</h3></c:when><c:otherwise>其他小于 140</c:otherwise></c:choose></c:otherwise></c:choose>
<c:forEach />遍历输出
<c:forEach begin="1" end="10" var="i">第${i}行</c:forEach>
