目录
JSTL 标签库全称是指 JSP Standard Tag Library ,是一个不断完善的开放源代码的 JSP 标
签库。
EL 表达式主要是为了替换 jsp 中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个 jsp 页面变得更佳简洁。
| 功能范围 | URI | 前缀 |
| 核心标签库--重点 | http://java.sun.com/jsp/jstl/core | c |
| 格式化 | http://java.sun.com/jsp/jstl/jstlfmt | 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 |
1、先导入 jstl 标签库的 jar 包。
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/functions" %>
- <%--
-
set /> - 作用:set标签可以往域中保存数据
- 域对象.setAttribute(key,value);
-
- scope 属性设置保存到哪个域
- page表示 PageContext域(默认值)
- request表示 Request域
- session表示 Session域
- application表示 ServletContext域
-
- var属性设置 key是多少
- value属性设置值
- --%>
-
- 保存之前:${ sessionScope.abc } <br>
- <c:set scope="session" var="abc" value="abcValue"/>
- 保存之后:${ sessionScope.abc } <br>
- <%--
- <c:if />
- 作用:if标签用来做 if判断。
-
- test属性表示判断的条件(使用EL表达式输出)
- --%>
- <c:if test="${ 12 == 12 }">
- <h1>12等于 12h1>
- c:if>
-
- <c:if test="${ 12 != 12 }">
- <h1>12不等于 12h1>
- c:if>
- <%--
- <c:choose> <c:when> <c:otherwise>标签
- 作用:多路判断。跟 switch ... case .... default非常接近
-
- choose标签开始选择判断
- when标签表示每一种判断情况
- test属性表示当前这种判断情况的值
- otherwise标签表示剩下的情况
-
- <c:choose> <c:when> <c:otherwise>标签使用时需要注意的点:
- 1、标签里不能使用 html注释,要使用jsp注释
- 2、when标签的父标签一定要是choose标签
- --%>
-
- <%
- 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>大于 160h3>
- c:when>
- <c:when test="${requestScope.height > 150}">
- <h3>大于 150h3>
- c:when>
- <c:when test="${requestScope.height > 140}">
- <h3>大于 140h3>
- c:when>
- <c:otherwise>
- 其他小于 140
- c:otherwise>
- c:choose>
- c:otherwise>
- c:choose>
1、遍历1到10,输出
- <%--
- <c:forEach />
- begin属性设置开始的索引
- end 属性设置结束的索引
- var 属性表示循环的变量(也是当前正在遍历到的数据)
- --%>
- <table border="1">
- <c:forEach begin="1" end="10" var="i">
- <tr>
- <td>第${i}行td>
- tr>
- c:forEach>
- table>
2、遍历 Object 数组
- <%--
- <c:forEach />
- items 表示遍历的数据源(遍历的集合)
- var 表示当前遍历到的数据
- --%>
- <%
- request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"});
- %>
- <c:forEach items="${ requestScope.arr }" var="item">
- ${ item } <br>
- c:forEach>
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">
- <h1>${entry.key} = ${entry.value}h1>
- c:forEach>
4、遍历 List 集合---list 中存放 Student 类,有属性:编号,用户名,密码,年龄,电话信息
- public class Student {
- private Integer id;
- private String username;
- private String password;
- private Integer age;
- private String phone;
- }
- <%
- List
studentList = new ArrayList(); - for (int i = 1; i <= 10; i++) {
- studentList.add(new Student(i,"username"+i ,"pass"+i,18+i,"phone"+i));
- }
- request.setAttribute("stus", studentList);
- %>
-
- <table>
- <tr>
- <th>编号th>
- <th>用户名th>
- <th>密码th>
- <th>年龄th>
- <th>电话th>
- <th>操作th>
- tr>
- <%--
- items 表示遍历的集合
- var 表示遍历到的数据
- begin表示遍历的开始索引值
- end 表示结束的索引值
- step 属性表示遍历的步长值
- varStatus 属性表示当前遍历到的数据的状态
- --%>
- <c:forEach begin="2" end="7" step="2" varStatus="status" items="${requestScope.stus}" var="stu">
- <tr>
- <td>${stu.id}td>
- <td>${stu.username}td>
- <td>${stu.password}td>
- <td>${stu.age}td>
- <td>${stu.phone}td>
- <td>${status.step}td>
- tr>
- c:forEach>
-
- table>