* 什么是 JSTL?
1. JSTL(JavaServer Pages Standard Tag Library,即:JSP 标准标签库),是由 SUN 公司发布的一个针对 JSP 开发的新组件,并做为 JSP 技术应用的一个标准
2. JSTL 标签库的做用是尽可能减小 JSP 文件的 Java 代码,使 Java 代码与 HTML 代码分离,因此 JSTL 标识库符合 MVC 设计理念
3. MVC 设计理念是实现动做控制、数据处理、结果显示三者分离
4. JSTL 几乎可以作到传统 JSP 脚本代码能作的任何事情
5. JSTL 标签库包含了如下五个标签库:
1)JSTL 核心标签库(重点讲解):是最经常使用的 JSTL 标签
2)I18N 格式标签库:用来格式化并输出文本、日期、时间、数字
3)XML 标签库:提供了与关系型数据库(Oracle,MySQL,SQL Server 等等)进行交互的标签
4)SQL 标签库:提供了建立和操做 XML 文档的标签
5)函数标签库:包含一系列标准函数,大部分是字符串处理函数
* 在 JSP 中使用 JSTL 标签须要具有以下两个条件:
1. 下载安装 JSTL 库(两种):
1)JSTL1.1 版本的下载地址为:https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
a.下载文件为 jakarta-taglibs-standard-1.1.1.zip,解压后将 lib 文件夹下的两个文件:jstl.jar、standard.jar 拷贝到 Web 应用程序的 /WEB-INF/lib/ 下
2)JSTL1.2 版本的下载地址为:https://mvnrepository.com/artifact/org.glassfish.web/jstl-impl/1.2
a.下载文件为 jstl-impl-1.2.jar,将该文件拷贝到 Web 应用程序的 /WEB-INF/lib/ 下
2. 要在 JSP 页面使用 taglib 指令引用 JSTL 标签库(根据本身的需求引用):
1)JSTL 核心标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2)I18N 格式标签库:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
3)XML 标签库:<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
4)SQL 标签库:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
5)函数标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
* JSTL 核心标签
* 1. <c:out value="数据" default="默认值" escapeXml="true"></c:out>
a.将数据输出给客户端,如同 <%= ... >
b.数据能够是常量值,也能够是 EL 表达式,使用的表达式结果为 null,则输出默认值
c.escapeXml:是否忽略 XML 特殊字符,默认为 true
* 2. <c:set var="hello" value="hello pageContext" scope="page"></c:set>
a.存储数据到做用域对象中
b.var:表示存储的键名
c.value:表示存储的数据
d.scope:表示要存储在哪一个做用域中,值有 page/request/session/application,默认是 page
* 3. <c:set target="package.class" property="propertyName" value="value" scope=""></c:set>
a.用于设置对象属性,此时就是 <jsp:setProperty> 行为标签的孪生兄弟了
b.一旦指定了 target 属性,就必定要指定 property 属性
* 4. <c:remove var="hello" scope="request"/>
a.删除做用域中的指定键名的数据
b.var:表示要删除数据的键名
c.scope:表示要删除数据所在的做用域(可选)
d.注意:若是在不指定做用域的状况使用该标签删除数据,会将四个做用对象中的符合要求的数据所有删除
* 5. <c:if test="${表达式}"> 代码 </c:if>
a.进行逻辑判断,至关于 Java 中的单分支判断
b.注意:逻辑判断标签须要依赖于 EL 的逻辑运算,也就是表达式中涉及的数据必须从做用域中获取
* 6. <c:choose>
<c:when test="${表达式}"> 执行体 </c:when>
<c:when test="${表达式}"> 执行体 </c:when>
....
<c:otherwise> 执行体 </c:otherwise>
</c:choose>
a.用于进行多条件的逻辑判断,相似 Java 中的多分支语句
b.条件成立只会执行一次,都不成立则执行 otherwise
* 7. <c:forEach var="i" begin="1" end="6" step="1" varStatus="vs">
<c:out value="${i}"/>
</c:forEach>
a.常量循环
b.var:声明变量,记录每次循环的结果。存储在做用域中,须要使用 EL 表达式获取
c.begin:声明循环开始位置
d.end:声明循环结束位置
e.step:设置步长
f.varStatus:声明标量,记录每次循环的数据(循环下标、循环次数、是不是第一次循环、是不是最后一次循环)。注意:这些数据存储在做用域中,须要使用 EL 表达式获取,如:
${vs.index}、${vs.count}、${vs.first}、${vs.last}
* 8. <c:forEach items="${list}" var="va">
<c:out value="${va}"/><p>
</c:forEach>
a.对象遍历
b.items:声明要遍历的对象,结合 EL 表达式获取对象
c.var:声明变量,记录每次循环的结果。存储在做用域中,须要使用 EL 表达式获取
* 9. <c:forTokens items="good,better,best" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
a.根据指定的分隔符来分隔内容并迭代输出
b.delims:表分隔符
c.var:声明变量,记录每次迭代输出的结果。存储在做用域中,须要使用 EL 表达式获取
* 9. <c:catch var="String exceptionName">
<% int x = 5/0; %>
</c:catch>
a.var:用来储存错误信息的变量,须要结合 EL 表达式来获取,如:${exceptioName}、${exceptioName.message}
* 10. <c:import url="" />
a.如同 <jsp:include> 行为标签,但能够是绝对路径
* 11. <c:redirect url="" /> a. 重定向至一个新的 URL