EL表达式
概念:expression language表达式语言
作用:替换和简化jsp页面中java代码的编写
语法:${ 表达式 }
注意:jsp自动直接EL表达式。如果需要忽略:
- 忽略所有:加入指令
<%@ page isELIgnored="true" %>
- 忽略一个:加一个转义字符,
${ ... }
使用:运算、取值。
运算
运算符:(比Java多几个,可以几个字母表示)
- 算数运算符:
+ - * / % div mod
- 比较运算符:
> < >= <= == !=
- 逻辑运算符:
&& || ! and or not
- 空运算符:
empty
(用于判断字符串、集合、数组是否为null,长度是否为0)
empty例子
${empty str}
取值
EL表达式只能从域对象中获取值
语法:
${域名.键名}
:从指定域中获取指定键的值- 简化写法
${键名}
:表示依次从最小的域中找键名 - list集合写法:
${域名.集合名[索引]}
- map集合写法:
${域名.集合名.key名}
域名:一共四个
- pageScope 对应pageContent类型
- requestScope 对应request类型
- sessionScope 对应session类型
- applicationScope 对应application(Servletcontext)类型
一般属性值
<%
request.setAttribute("name", "Tom");
%>
${requestScope.name}
获取对象中的值
本质上调用JavaBean中的getter方法而来,只要有getXxx()
方法,就可以获得obj.xxx
值。
<%
User user = new User("张三", 18, new Date());
request.setAttribute("u", user);
%>
${requestScope.u.name} <br>
${u.name} <br>
${u.birthday} <br>
获取List集合中的值
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
request.setAttribute("list", list);
%>
${requestScope.list} <br>
${requestScope.list[0]}
隐式对象
EL表达式中有11个隐式对象
- pageContext
- 获取其它8个隐式对象,如
${pageContext.request.contextPath}
(动态获取虚拟目录)
- 获取其它8个隐式对象,如
JSTL标签库
概念:JavaServer Pages Tag Library, JSP标准标签库
- 是Apache组织提供的开源的免费的jsp标签
作用:用于简化和替换jsp页面上的java代码
使用步骤:
- 导入jstl相关的jar包
- 引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 使用标签
常用的JSTL标签:
- if 相当于java中的if语句
- choose 相当于java中的switch语句
- foreach 相当于java中的for语句
if标签
test属性:接受布尔表达式
<c:if test="true">
<h1> 如果是真,显示当前内容 </h1>
</c:if>
choose标签
<%
request.setAttribute("number", 13);
%>
<c:choose>
<c:when test="${number == 6}">周六</c:when>
<c:when test="${number == 7}">周日</c:when>
<c:otherwise>不是星期天</c:otherwise>}
</c:choose>
foreach标签
第一种用法
<c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
${i} ${s.index} ${s.count} <br>
</c:forEach>
其中 varStatus可以不用,varStatus表示循环状态
s.index表示容器中元素的索引,从0开始
s.count表示循环次数
第二种用法:遍历容器
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="str">
${str} <br>
</c:forEach>