EL表达式
什么是EL表达式,EL表达式的作用
- EL表达式的全称是 Expression Language ,表达式语言
- 作用 --是替代表达式脚本在jsp页面上输入数据
- 格式 – ${表达式}
EL表达式搜索域数据的顺序
pageContext ,request ,Session ,spplication
EL表达式输出bean的普通属性,数组属性,List属性,map属性
${key.property} 输出对象属性
${key.property[index]} 输出对象的数组属性的元素(list集合)
${key.property.key} 输出对象的map集合的指定key的值
empty运算
empty运算是用来判断某个数据的值是否为空,如果为空,就返回true
为空的情况:
- 值为null的情况
- 空串的情况
- Object 数组,且长度为零
- List集合或者map集合的元素个数为零
点运算 和 中括号运算符
’.’ 点运算 可以输出JavaBean的某个属性值。以及map集合中指定的key值
[] 中括号运算符 可以输出有序集合中元素的值。以及map集合中key里含有特殊字符的key值。
EL表达式的11个隐含对象
变量名 | 数据类型 | 作用 |
---|---|---|
pageContext | pageContextImpl | 获取jsp中的九大内置对象 |
pageScope | Map<String,Object> | 获取pageContext域中的数据 |
requestScope | Map<String,Object> | 获取request域中的数据 |
sessionScope | Map<String,Object> | 获取Session域中的数据 |
applicationScope | Map<String,Object> | 获取ServletContext域中的数据 |
param | Map<String,String> | 获取请求的参数值 |
paramValues | Map<String,String[]> | 获取请求的参数值,多个值 |
header | Map<String,String> | 获取请求头的信息 |
headerValues | Map<String,String[]> | 获取请求头的信息,多个值 |
cookie | Map<String,Cookie> | 获取cookie的的信息 |
initParam | Map<String,String> | 获取在web.xml中配置的context-param参数 |
JSTL 标签库
Core 核心标签库:
< c:set > 可以保存数据到域中
< c:if > 做if判断
< c:choose > < c:when > < c:otherwise > 可以用来做多路判断
< c:forEach > 做遍历操作
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.LinkedHashMap" %>
<%--
Created by IntelliJ IDEA.
User: c1751
Date: 2020/10/11
Time: 14:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- 要导入两个 jar包
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar
uri="http://java.sun.com/jsp/jstl/core" --%>
<html>
<head>
<title>JSTL标签库</title>
</head>
<body>
<P> Hello World</P>
<%--
scope 设置你要往哪个域中保存数据,分别是page(默认),request,session,application
var 是你要保存的key
value 是你要保存的值
--%>
<c:set scope="request" var="key" value="这是导入的值" />
保存之后
:${requestScope.key}
<c:if test="${1 ==1 }">
<h3>你好厉害啊</h3>
</c:if>
<c:set scope="request" var="key" value="15" />
<%--
choose - when - otherwise 标签可以做多路判断
test 属性是判断条件
choose - when - otherwise 标签在做的时候需要注意以下几点:
1.在这组标签内不能使用HTML注册,只能使用jsp注释
2.when标签的父标签必须是choose标签
--%>
<c:choose>
<c:when test="${requestScope.key >10}">
<h3>你好漂亮啊</h3>
</c:when>
<c:otherwise>
<h4>你好。。。。特别啊</h4>
</c:otherwise>
</c:choose>
<%--
context 属性设置工程路径(默认是当前工程路径)
value 是你要访问的资源路径
--%>
<br />
<c:url context="/abc" value="/index.jsp">
<c:param name="username" value="白夜" />
<c:param name="password" value="4561123"/>
</c:url>
<br />
<%--
begin 设置要遍历的开始索引
end 设置要遍历的结束索引
var 设置你的循环变量名
--%>
<br />
<c:forEach begin="0" end="15" var="i">
${i}
</c:forEach>
<%-- 遍历Object数组--%>
<%
request.setAttribute("arr",new String[]{"aaa","ass","ccc","zzz"});
%>
<%--
items 你要遍历的数据源
var 当前要遍历的数据
--%>
<br />
<hr />
<c:forEach items="${requestScope.arr}" var="i">
${i}
</c:forEach>
<%-- 遍历List集合--%>
<br/>
<%
List<Integer> integers = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
integers.add(i+1);
}
request.setAttribute("list",integers);
%>
<c:forEach items="${requestScope.list}" var="i">
${i}
</c:forEach>
<%-- 遍历map集合--%>
<br/>
<%
Map<Integer,String> map = new LinkedHashMap<Integer,String>();
for (int i = 0; i < 10; i++) {
map.put(i+1, String.valueOf('a'+i));
}
request.setAttribute("map",map);
%>
<c:forEach items="${requestScope.map}" var="i" varStatus="">
${i}
</c:forEach>
<%--
begin 设置要遍历的开始索引
end 设置要遍历的结束索引
items 你要遍历的数据源
var 当前要遍历的数据
varStatus 当前遍历数据的状态
--%>
<br/>
<c:forEach items="${requestScope.map}" var="i" varStatus="statu">
${i }
<br>
${"获取当前遍历到的数据"}
${statu.current}
<br>
${"获取当前遍历到的索引"}
${statu.index}
<br>
${"获取当前遍历到几个元素"}
${statu.count}
<br>
${statu.first}
${statu.end}
${statu.last}<br>
${"获取 begin,end,step的值"}
${statu.step}
${statu.begin}
${statu.end}
<br>
<hr/>
</c:forEach>
</body>
</html>
结果:(部分。。。太长了)