JSTL:是开放源代码的JSP标签库,是apeache 的。
**作用是:**替代jsp脚本<%%>。 替代页面上的逻辑语言(比如if 循环等)
使用步骤:
- 在项目中导入jar 包【jstl.jar / standard.jar】
- 在jsp 页面上导入标签库:<%@taglib prefix= " " uri=" "%>
jstl 的分类:
core :核心类库【只有这一个经常使用并且需要掌握】
fmt : 格式化/xml /sql /函数库
core★★★
(core 中一共有13个标签)标签:【掌握两个判断/循环】
- C:if 判断
< C : if test="$ { el 表达式}" > 满足的时候输出的内容</C:if>
关于使用记住: 标签,属性,输出
//导入标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
//if 的使用
<c:if test="${3>4}"> a>b </c:if>
<c:if test="${3<=4}"> a<b </c:if>
- C:forEach 循环
在JSP页面导入标签库:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
-
格式1:【基本使用】
- <c:forEach begin=“从哪里开始” end=“到那里结束” step=“步长” var=“变量名” varStatus=“循环状态变量”>
$ {i}—$ {vars.count}–${vars.current}< br>
</c:forEach>**varStatus** : 用来记录循环状态量。 常用属性: 1. count : 记录循环次数 2. current : 当前遍历到的内容
例如:
变量i---循环次数---当前数据<br>
<c:forEach begin="1" end="20" step="2" var="i" varStatus="vars">
${i}---${vars.count}--${vars.current}<br>
//输出i 相当于java 中的:
for(int i=1;i<11;i++)输出i
- 格式2:【高级使用:遍历容器】
格式:
代码:
<c:forEach items=“遍历对象” var=“设置变量” varStatus=“状态变量”>
$ {n}–$ {m.count}< br>
</c:forEach>
【var=“n” 设置的变量相当于在java 中使用for-each,用来表示集合中的数据的变量】
<%--遍历request 域中的list set map--%>
<c:forEach items="${list}" var="n" varStatus="m">
${n}--${m.count}<br>
</c:forEach>
相关注释:
<%-- 遍历原理
相当于在java 中使用foreach 语句遍历容器
for(String a:list){
输出 a
}
–%>
<hr>
<%--遍历set--%>
<c:forEach items="${set}" var="n" varStatus="m">
${n}--${m.count}<br>
</c:forEach>
<hr>
<%--遍历map 遍历获取到的是一个键值对--%>
<c:forEach items="${map}" var="en">
${en.key}--${en.value}<br>
</c:forEach>
相关注释:
遍历集合map 时,获取的时一个键值对,变量var=“en” en 是一个键值对。通过javabean 导航就可以获取键(key) 值(value)
小总结:
其实在jstl 中的for 的原理都是Java中的for-each ,搞清楚相关的量对应的关系
了解core的其两个标签:
- c:set:向域中设置值
使用格式:<c: var=“变量名” value=“变量的值” scope=“存入哪一个域”>
<c: var="day" value="3"/> 相当于,pageContext.setAttribute("day","3")
//不指定域,就是存放在整个页面中(pageContext 域中)
- <c:choose><c:when test="${el 表达式}">表达式成立的时候的输出</c:when></c:choose>
这个表达式相当于if-else if-if else.有一个条件成立,则输出,结束判断