一:EL表达式
1. 概念
- Expression Language,即表达式语言
2. 用途
- 替换并简化JSP中Java代码的编写
3. 语法
- 格式:
${表达式}
4. 是否在JSP中忽略EL表达式
- JSP中默认支持EL表达式,有以下2种方法忽略EL表达式
- 设置JSP的page指令,即
<%@ page isELIgnored="true" %> - 在要忽略的EL表达式前加\,例如
\${1 > 0}
5. 用法
1. 做运算
- 运算符分类
- 算术运算符
+,-,*,/(div),%(mod)
- 比较运算符
>,>=,<,<=,==,!=
- 逻辑运算符
&&(and),||(or),!(not)
- 空运算符
- empty
${empty 对象名}:判断数组,字符串或集合对象是否为null或长度是否为0${not empty 对象名}:判断数组,字符串或集合对象是否不为null并且长度是否大于0
- empty
2. 获取值
- EL表达式只能从域对象中获取值
- 语法
${域名称.键名}:从指定域中获取指定键对应的值- 域名称(作用域从小到大排序)->对应的内置对象
pageScope-> pageContextrequestScope-> requestsessionScope-> sessionapplicationScope-> application 示例代码:
<% request.setAttribute("name","zs"); %> ${requestScope.name} ${键名}:按照作用域从小到大的顺序,依次查找是否有此键名,若有,输出对应的值;若无,则不输出任何内容
- 域名称(作用域从小到大排序)->对应的内置对象
- 获取对象、List集合和Map集合的值
- 获取对象的属性的值
${域名称.键名.属性名}- 本质上调用了此对象的getter方法 示例代码:
<% session.setAttribute("req",request); %> ${sessionScope.req.requestURL} - 获取List集合中元素的值
${域名称.键名[索引]}
- 获取Map集合中元素的值
${域名称.键名.key名称}${域名称.键名["key名称"]}示例代码:
<% Map<String,String> map = new HashMap<>(); map.put("name","zs"); map.put("age","18"); request.setAttribute("map",map); %> ${requestScope.map.name} ${requestScope.map["age"]}
- 获取对象的属性的值
3. 隐式对象
- EL表达式中有11个隐式对象,类似于JSP中的内置对象
- 其中的pageContext
- 可以获取JSP的其他8个内置对象
- 动态获取虚拟目录:
${pageContext.request.contextPath}
- 其中的pageContext
二:JSTL
1. 概念
- JSP Standard Tag Library,即JSP标准标签库
2. 用途
- 替换并简化JSP中Java代码的编写
3. 使用步骤
-
导入JSTL相关的jar包
- 到apache官网下载JSTL相关的jar包的压缩包,即jakarta-taglibs-standard-1.1.2.zip
- 下载完成后进行解压
- 将jakarta-taglibs-standard-1.1.2\lib目录下的jstl.jar和standard.jar导入到IDEA项目中
-
在JSP中导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> -
利用前缀c来使用标签,例如
<c:if test="1 > 0"> 否 </c:if>
4. 常用的JSTL标签
- if
- 相当于Java代码中的if语句
- 其中的test属性
- 必须属性,接受boolean表达式
- 如果表达式值为true,则输出标签体内容;否则,不输出标签体内容
- 一般情况下,test属性值会结合EL表达式使用
- if标签没有else情况
- choose
- 相当于Java代码中的switch语句
- 使用
choose标签(相当于switch) - 使用
when标签(相当于case) - 使用
otherwise(相当于default) 示例代码
<% request.setAttribute("score",90); %> <c:choose> <c:when test="${requestScope.score >= 80}">优秀</c:when> <c:when test="${requestScope.score >= 60}">及格</c:when> <c:otherwise>不及格</c:otherwise> </c:choose> - foreach
- 相当于Java代码中的for语句
- 完成重复操作
- 属性
begin:开始值end:结束值step:步长var:临时变量varStatus:循环状态变量index:索引,从0开始count:循环次数,从1开始
- 属性
- 遍历集合
- 属性
items:集合对象var:临时变量varStatus:循环状态变量index:索引,从0开始count:循环次数,从1开始
- 属性