1. EL
1.1. Expression Language
1.2. 语法:${保存在内置对象中的数据的键},例如${uname}获取内置对象中键为uname的值
1.3. 使用EL表达式获取数据时,推荐写明数据保存的作用域的全称,例如,如果将uname数据保存在request作用域中,则${requestScope.uname}
1.4. 如果EL表达式获取数据时不写明作用域的范围,则Tomcat容器会按照生命周期从小到大的范围依次寻找数据,request<session<application
1.5. EL常用运算符
==或者eq ${uname==‘jack’} ${uname eq ‘jack’}
!=或者ne ${uname!=‘jack’} ${uname ne ‘jack’}
<或者lt ${2<5} ${2 lt 5}
>或者gt ${5>2} ${5 gt 2}
<=或者le ${2<=5} ${2 le 5}
>=或者ge ${5>=2} ${5 ge 2}
&&或者and ${uname eq ‘jack’and upwd eq ‘8888’}
||或者or ${uname eq ‘jack’or uage lt 17}
!或者not ${!(uname eq ‘jack’)}
1.6. EL表达式的判断非空
${uname==null} ${uname!=null} ${empty uname} ${not empty uname}
1.7. 三元运算符
${sex eq ‘男’?1:0} 如果作用域中的变量sex的值为‘男’,则此处显示1,否则显示0
2. JSTL
2.1. JSP Standard Tag Library
2.2. 由四个定制标记库(core、format、xml 和 sql)
2.3. 在需要使用JSTL标签的页面导入标签指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2.4. 将数据保存在指定的作用域
<!-- var 定义数据的键名 value数据的值 scope 数据保存的作用域 -->
<c:set var="uname" value="jack" scope="session"></c:set>
2.5. 获取数据
<c:out value="${uname}" ></c:out>
2.6. If判断
<c:if test="${empty uname}">
<a href="login.jsp">登录</a>
</c:if>
<c:if test="${uname!=null}">
${uname},您好!
</c:if>
2.7. If-else if判断
<c:choose>
<c:when test="${empty uname}">
<a href="login.jsp">登录</a>
</c:when>
<c:when test="${uname eq 'jack' }">
jack,你好
</c:when>
<c:otherwise>
${uname},您好!
</c:otherwise>
</c:choose>
2.8. 遍历数据
el表达式与jstl连用遍历对象集合:<br/>
<!-- items 需要遍历的集合的名称,保存在作用域中的键
var 定义用来表示每个元素的临时变量
varStatus 遍历每个元素时索引对象,对象具有index的属性,获取当前元素的索引号,从0开始
start 指定遍历元素开始索引号
End 指定遍历元素结束索引号
Step 指定每次遍历元素,索引号自加的数量,例如step=2
-->
<c:forEach varStatus="b" items="${us}" var="a" >
<p
//jstl标签可以写在页面的任何地方,
//利用if判断实现根据索引号的奇偶性,给不同的数据添加不同样式
<c:if test="${b.index%2==0}">
style="background:skyblue;"
</c:if>
<c:if test="${b.index%2!=0}">
style="background:lightgray;"
</c:if>
>${a.uname}---${a.addr.city}--${b.index}</p>
</c:forEach>