赞
踩
JSTL(JSP Standard Tag Library)即JSP标准标签库
EL用于替换掉JSP页面中的表达式脚本,JSTL用于替换掉JSP页面中的代码脚本
EL结合JSTL使用,可以使JSP页面更加简洁
JSTL的组成:
1,核心标签库 c
2,格式化 fmt
3,函数 fn
4,数据库 sql
5,XML x
这里只使用核心标签库
使用JSTL之前:
1,导入JSTL需要的相关依赖
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2,在JSP页面使用taglib指令引入核心标签库
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
JSTL提供了许多标签用来代替Java的某些语法
<c:set scope="xx" var="yy" value="zz"/>
scope属性: 指定的域对象(page,request,session,application)
var属性: 被存储对象的键名
value属性: 被存储的对象
使用示例:
<%-- 使用JSTL存储数据到域对象 --%>
<c:set scope="request" var="key" value="value"/>
${requestScope.get("key")}
输出:
<c:if test="${表达式}">
待执行语句
</c:if>
test属性: EL条件表达式,表达式返回值为true则执行JSTL中的语句
使用示例:
<%-- 使用JSTL完成判断语句 --%>
<c:if test="${22 == 22}">
${pageContext.request.method}
</c:if>
输出:
可以使用choose,when,otherwise组合完成多重判断的功能
<c:choose> <c:when test="${表达式1}"> 待执行语句 </c:when> <c:when test="${表达式2}"> 待执行语句 </c:when> <c:otherwise> 待执行语句 </c:otherwise> </c:choose> choose标签: 多路判断的开始 when: 某种独立的判断情况 otherwise: 其它情况
普通循环:
<c:forEach begin="1" end="10" var="i" step="2">
${i}
</c:forEach>
begin属性: 开始索引
end属性: 结束索引
var属性: 循环变量
step属性: 步长
遍历数组/列表:
<%
List<String> myList = new ArrayList<>();
myList.add("a");
myList.add("b");
myList.add("c");
request.setAttribute("list", myList);
%>
<c:forEach items="${ requestScope.get('list') }" var="item">
${item}
</c:forEach>
items属性: 待遍历的集合,必须要使用EL取得
遍历Map:
<%
Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
myMap.put("key3", "value3");
request.setAttribute("map", myMap);
%>
<c:forEach items="${ requestScope.get('map').keySet() }" var="item">
${requestScope.get('map').get(item)}
</c:forEach>
输出:
<c: forEach>中的status属性:
status是一个对象,可以调用一些方法来获取更多的信息:
status.current 当前对象
status.index 获取索引从0开始
status.count 当前数据是集合的第几个元素
status.first 是否是集合中第一个元素
status.last 是否是集合中最后一个元素
status.begin 获取开始索引
status.end 获取结束索引
status.step 获取步长
使用示例:
<table border="1"> <c:forEach items="${ requestScope.myList }" var="item" varStatus="status"> <tr> <td> ${item} ${status.current} ${status.index} ${status.count} </td> <td> ${status.first} ${status.last} </td> <td> ${status.begin} ${status.end} ${status.step} </td> </tr> </c:forEach> </table>
输出:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。