JavaWeb 速通 EL 和 JSTL
目录
一、EL表达式
1.快速入门 :
1.1 基本介绍
1° EL 表达式全称:Expression Language,是表达式语言
2° EL 表达式的主要作用是代替JSP页面的表达式脚本 <% =request.getAttribute("...") %>3° EL 表达式基本语法: ${key},形式上比传统的JSP表达式脚本更简洁。
1.2 入门案例
以intro.jsp为例,代码如下 :
运行结果 :
2.常用输出形式 :
2.1 创建JavaBean类
Movie类代码如下 :
2.2 创建JSP文件
output.jsp文件代码如下 :
运行结果 :
3.empty运算符 :
3.1 介绍
1° empty 运算可以判断一个数据是否为空,如果为空,返回true,否则返回false
2° 以下几种情况为空——
● value = null● value = ""● value = new Object[] {} (长度为0的Object数组)● 元素个数为0 的List集合● 元素个数为0 的Map集合
3.2 实例
empty.jsp代码如下 :
运行结果 :
4.EL对象 :
4.1 EL11个内置对象
如下表格所示 :
变量 | 类型 | 说明 |
---|---|---|
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>上下文参数 |
4.2 域对象演示
elScope.jsp代码如下 :
运行结果 :
4.3获取HTTP信息
http.jsp代码如下 :
运行结果 :
二、JSTL标签库
1.基本介绍 :
1° JSTL标签库是指 JSP Standard Tag Library,即JSP标准标签库。
2° EL 表达式是为了替换JSP中的表达式脚本<%=%>,JSTL则是为了替换JSP中的代码脚本<%%>。3° JSTL 由五个标签库组成——
功能范围 URI 前缀 核心标签库 http://java.sun.com/jsp/jstl/core c 格式化 http://java.sun.com/jsp/jstl/fmt fmt 函数 http://java.sun.com/jsp/jstl/functions fn 数据库(不使用) http://java.sun.com/jsp/jstl/sql sql XML(不使用) http://java.sun.com/jsp/jstl/xml x 4° 使用JSTL需要导入jar包(impl 和 spec),PS : Tomcat10版本对jar包的依赖有变化(jakarta)。导入jar包后要重新启动Tomcat。下载jar包的网址如下 :
5° taglib引入标签,要放在行首。
2.core核心库常用标签 :
2.1 <c:set></c:set>
(1) <c:set></c:set> 标签可以向域中保存数据,等价于——域对象.setAttribute(key,value);
(2) scope 属性设置保存到哪个域page 表示 PageContext 域(默认值)request 表示 Request 域session 表示 Session 域application 表示 ServletContext 域(3) var 属性用于设置 key(键)(4) value 属性用于设置 value(值)
2.2 <c:if></c:if>
(1) <c:if></c:if>标签用来做 if 判断。(2) 其中的test 属性表示判断的条件(用 EL 表达式输出)
2.3 <c:choose> <c:when> <c:otherwise>
(1) 使用格式如下——
<c:choose><c:when test="${ requestScope.score >= 90 }"><h1>牛逼~</h1></c:when><c:when test="${ requestScope.score >= 80 }"><h1>还不错~</h1></c:when><c:otherwise><h1>飞舞!</h1></c:otherwise></c:choose>(2) 如果使用EL表达式取数据时,没有指定域范围,默认是从小到大找。
2.4 <c : forEach>/c:forEach>
(1) <c:forEach></c:forEach>标签用来遍历输出,主要有以下四种遍历形式——● 普通遍历输出 i 到 j (前闭后闭)● 遍历数组● 遍历 Map● 遍历 List(2) 相关属性——1> 普通遍历 :begin 属性设置开始的索引end 属性设置结束的索引step 属性表示遍历的步长值
var 属性表示循环的变量(也是当前正在遍历到的数据)2> 遍历数组 :items 遍历的集合
var 遍历到的数据 (类似于增强for;输出时会自动锁定所在域)eg :<%
request.setAttribute("books", new String[]{"哈利波特", "指环王"});
%><c:forEach items="${requestScope.books}" var="book">bookName = ${book} <br/></c:forEach>3> 遍历Map集合 :eg :<%
Map<String, String> students = new HashMap<>();map.put("Cyan", "425");map.put("Rain", "400");map.put("Ice", "430");
request.setAttribute("students", students);
%><c:forEach items="${requestScope.students}" var="student">Student's Info = ${student.key} --- ${student.value} <br/></c:forEach>4> 遍历List集合 :
Δ遍历List集合与遍历Map集合时的步骤类似,都像Java 中的增强for循环结构。
varStatus 属性表示当前遍历到的数据的状态,可以得到 step,begin,end 等属性值PS : 需要对应的JavaBean类提供相应的getXxx方法。
System.out.println("END----------------------------------------------------------------------------------------------------------------------");
- 点赞
- 收藏
- 关注作者
评论(0)