一、JSTL简介
引入:在JSP以及javaBean中 ,当我们在网页中使用循环,或者使用对象方法连接数据库时,我们都不可避免的需要使用到jsp的脚本编制元素,其中嵌有大量的java代码,现在开发者想尽可能的避免使用jsp脚本编制元素,进一步将应用程序的显示层和业务层完全分离,更加有利于应用程序的分工协作,jsp开发者指定了 JSTL ,提供了一组统一的通用的自定义标签文件,并将这些文件组合在一起,形成了jsp标准标签库,即JSTL。
1) 定义:包含编写和开发JSP页面的一组标准标签
a) 特点:为开发者提供了一个无脚本环境,无需编写JAVA脚本
b) 包含
1. 核心标签库
2. SQL标签库
3. 国际化(I18N)与格式化标签库
4. XML标签库
c) 分类 : 两个版本
1. 使用 EL
2. 使用请求时表达式
2) 作用
a) 进一步简化开发,简化页面, 实现页面脱离jsp脚本元素
b) 让页面尽可能少的出现java代码
c) 优势:与EL表达式配合使用,可以用EL 代替属性值 进一步动态改变
3) 使用
a) 导入标签库(Eclipse等工具中需要做这一步)
b) 使用标签库中标签的实施步骤
i. 将JSTL对应的JAR文件:jstl.jar、standard.jar添加到应用程序的WEB-INF/lib目录(这两个jar文件见课件目录” JSTL标签库”)
ii. 在编写的jsp页面中指定标签库的描述信息:
语法:<%@ taglib prefix=”c” uri=”http://java.sun.com/jstl/core_rt” %>
关于上述语法使用的扩充:
<%@ taglib prefix =”标签别名” uri =”标签库的位置“>
1. 标签别名常用c
2. 标签库的位置:(即uri的设置)
二、核心标签库-----core 或 c.tld
a) 分类:
1. 通用标签:操作JSP页面创建的范围变量
2. 条件标签:操作条件运算 判断与处理
3. 循环标签:操作循环运算
b) 通用标签
1. 设置,删除,显示在JSP页面内创建的变量值或对象值
2. 变量的范围是由设置时的scope 属性决定
3. <c: set> 用于设置变量或者对象属性的值
<c:set var=”变量名” value=”变量值” scope=”作用域范围”/>
<c:set target=”对象名” property=”属性名” value=”值”/>
:注意: “变量值” 可以是 EL表达式
4. <c: out> 用于动态显示数据(功能类似于EL)
1:<c:out value=” 表达式” default=”默认值” escapeXml=”true/false” >
2: 注意:表达式 可以是 1》普通的常量值
2》输出已经设置的变量值:${变量的名称}
5. <c: remove>用于删除创建的变量
a) <c:remove var=”变量的名称” scope =”作用域”>
(案例:演示上面几个标签)
c) 条件标签
1. 提供条件运算, 两种类型: if choose
2. <c: if> 语法
a) <c:if test=”条件 ” var=” 存放测试条件结果的变量” scope=”作用域” >
b) 。。。。。。。条件体
c) </c:if>
d) var 存放的是:结果为true 或 false
e) 不能实现else 由下面的实现
3. <c:choose>语法
a) <c:choose>
i. <c:when test=”条件表达式1”>
ii. 需要处理的语句1
iii. </c:when>
iv. <c:when test=”条件表达式2”>
v. 需要处理的语句2
vi. </c:when>
vii. <c:otherwise>
viii. 需要处理的语句
ix. </c:otherwise>
b) </c:choose>
(案例 three.jsp)
d) 迭代标签
1. 分两种: forEach forTokens
2. forEach
简单的应用
<c:forEach var=”循环控制变量” test=”循环条件” begin=”循环开始值” end=”循环结束值” varStatus=”保存循环状态的变量”>
循环体
</forEach>
用于集合对象的访问
<c:forEach var=”存放集合当前记录的变量” items=”要轮循的集合名” begin=”集合的起始索引位置” end=”集合的结束位置”>
</forEach>
注意:如果没有设置begin,end将检索所有元素,step没设置默认为1
3. forTokens (与<c:forEach>有区别,用于轮循一个字符串)
<c:forTokens items=”要轮循的字符串” delims=”单词的分界符” var=”存放单词的变量”>
</c:forTokens>