一、什么是JSTL标签库
- JSTL标签库全称是指JSP Standard Tag Library JSP标准标签库,是一个不断完善的开放源代码的JSP标签库。
- EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本,这样使得整个jsp页面变得更佳简洁。
1. 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 |
2. 在jsp标签库中使用taglib指令引入标签库
- CORE 标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- XML 标签库
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
- FMT 标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- SQL 标签库
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> ```
- FUNCTIONS 标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/f
二、JSTL标签库的使用步骤
1. 先导入jar包
2. 使用tahlib指令引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
三、core核心库使用
1. <c:set/>
<c:set scope="session" var="abc" value="abcValue"/>
${sessionScope.abc}<br>
- set 标签可以往域中保存数据
- 域对象.setAttribute(key,value)
- scope 属性设置保存到哪个域
page 表示 PageContext 域(默认值)
request 表示 Request 域
session 表示 Session 域
application 表示 ServletContext 域- var 属性设置 key 是多少
- value 属性设置值
2. <c:if />
<c:if test="${5==5}">
<h1>5等于5</h1>
</c:if>
<c:if test="${5!=5}">
<h1>5不等于5</h1>
</c:if>
- 运行tomcat
- if 标签用来做 if 判断
- test 属性表示判断的条件(使用 EL 表达式输出)
3. <c:choose> <c:when> <c:otherwise>标签
<%
request.setAttribute("height", 180);
%>
<c:choose>
<c:when test="${ requestScope.height > 190 }">
<h2>小巨人</h2>
</c:when>
<c:when test="${ requestScope.height > 180 }">
<h2>很高</h2>
</c:when>
<c:when test="${ requestScope.height > 170 }">
<h2>还可以</h2>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${requestScope.height > 160}">
<h3>大于 160</h3>
</c:when>
<c:when test="${requestScope.height > 150}">
<h3>大于 150</h3>
</c:when>
<c:when test="${requestScope.height > 140}">
<h3>大于 140</h3>
</c:when>
<c:otherwise>
其他小于 140
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
- 运行tomcat
设置不同的height值,会输出不同的结果
- 多路判断,跟 switch … case … default 非常接近
- choose 标签开始选择判断
- when 标签表示每一种判断情况
test 属性表示当前这种判断情况的值- otherwise 标签表示剩下的情况
- <c:choose> <c:when> <c:otherwise>标签使用时需要注意的点
- 标签里不能使用 html 注释,要使用 jsp 注释
- when 标签的父标签一定要是 choose 标签
4. <c:forEach />
4.1 遍历1到10
<table border="1">
<c:forEach begin="1" end="10" var="i">
<p>第${i}行</p>
</c:forEach>
</table>
4.2 遍历Object
<%
request.setAttribute("arr", new String[]{"13772193120","13778150254","18600000000"});
%>
<c:forEach items="${ requestScope.arr }" var="item">
${ item } <br>
</c:forEach>
4.3 遍历Map
<%
Map<String,Object> map = new HashMap<String, Object>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
request.setAttribute("map", map);
%>
<c:forEach items="${requestScope.map}" var="entry">
<p>${entry.key}:${entry.value}</p>
</c:forEach>
4.4 遍历List
<%
List<Student> studentList = new ArrayList<Student>();
for (int i = 1; i <= 10; i++) {
studentList.add(new Student(i,"username"+i,18+i,"男"));
}
request.setAttribute("stus", studentList);
%>
<table>
<tr>
<th>编号</th>
<th>用户名</th>
<th>年龄</th>
<th>性别</th>
</tr>
<c:forEach items="${requestScope.stus}" var="stu">
<tr>
<td>${stu.id}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
<td>${stu.gender}</td>
</tr>
</c:forEach>
</table>
- items 表示遍历的集合
- var 表示遍历到的数据
- begin 表示遍历的开始索引值
- end 表示结束的索引值
- step 属性表示遍历的步长值
- varStatus 属性表示当前遍历到的数据的状态