1 EL表达式
EL表达式核心点是将对象存储到某个域中,在需要的页面中直接使用表达式来使用,从来减少获取及强制类型转换的操作
<%
//存储
session.setAttribute("name","小黑");
//存储对象
Emp emp = new Emp();
emp.setEname("阿狸");
emp.setSex("女");
session.setAttribute("emp",emp);
%>
name:${name}
<hr>
ename:${emp.ename}
sex:${emp.sex}
注意:el表达式存储对象后,可以直接通过对象.属性获取值(实际是通过类中的setter和getter方法获取的)
运算符 | 关键词 | 描述 |
---|---|---|
== | eq | 判断是否相等 |
> | gt | 判断是否大于 |
< | lt | 判断是否小于 |
empty | 判断是否为空 | |
! | not | 非 |
${empty emp}
${not empty emp}
${emp == null}
多个作用域有相同的key
<%
request.setAttribute("name","小黑");
application.setAttribute("name","小花");
session.setAttribute("name","小红");
pageContext.setAttribute("name","小绿");
%>
<%--当多个域中有相同的key时,按照作用域的大小,从小到大查找--%>
${name}
2 JSTL标签库
JSTL是一个标签库(其中是以标签的形式来进行使用的),可以简化JSP页面中的小脚本的使用频率,让JSP页面看着更干净整洁
JSTL中也提供了用于做逻辑判断的功能,可以结合EL表达式使用
步骤:
1.关联jar包(JSTL的标签库、JSTL的规范)
2.引入标准库路径
<!%--prefix:别名 uri:引入的标准库路径--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--1~5循环--%>
<c:forEach begin="1" end="5" var="index">
${index}
</c:forEach>
<%--遍历数组
items:指定要遍历的对象
var:每次遍历对应的对象
begin:开始值
end:结束值
varStatus:下标对象
--%>
<c:forEach items="${strArr}" var="str" varStatus="indexObj">
${str},${indexObj.index}
</c:forEach>
<hr>
<%--遍历list集合--%>
<c:forEach items="${list}" var="str" varStatus="indexObj">
${str},${indexObj.index}
</c:forEach>
<hr>
<%--
for(int i=0;i<empList.size();i++){empList.get(i);}
for(Emp emp : empList){}
--%>
<c:forEach items="${empList}" var="emp">
姓名:${emp.ename},序号:${emp.eno}<br>
</c:forEach>
<hr>
<%--遍历Map集合--%>
<c:forEach items="${map}" var="map">
${map.key},${map.value}
</c:forEach>