全称
JSTL全称是JSP Standard Tag Library
EL表达式 主要是为了替代jsp中的表达式脚本
JSTL 主要是为了替代jsp中的代码脚本
是jsp更加简洁 可读性更好
JSTL由五组不同标签库组成
核心标签库
格式化
函数
数据库(不使用)
XML(不使用)
在jsp标签库中 使用taglib指令引入标签库
prefix表示前缀 url表示地址
CORE标签库
<%@ taglib prefix=“c” url=“http://java.sun.com/jsp/jstl/core”%>
XML标签库
<%@ taglib prefix=“x” url=“http://java.sun.com/jsp/jstl/xml”%>
FMT标签库
<%@ taglib prefix=“fmt” url=“http://java.sun.com/jsp/jstl/fmt”%>
SQL标签库
<%@ taglib prefix=“sql” url=“http://java.sun.com/jsp/jstl/sql”%>
FUNCTIONS标签库
<%@ taglib prefix=“fn” url=“http://java.sun.com/jsp/jstl/functions”%>
JSTL标签库的使用步骤
1.导入JSTL标签库的jar包 jstl1.2只需要导入一个jar包 之前的需要两个
2.写taglib指令 引入标签库
<%@ taglib prefix=“c” url=“http://java.sun.com/jsp/jstl/core”%>
然后就可以使用了
core核心库的使用
<c:set />
set标签可以往域里保存数据
保存之前$ {requestScope.abc}</ br>//(EL表达式 啥也没有的时候啥也不输出)
//保存到哪个域scope(page(默认值) request session application) var(key) value(value)
<c:set scope=“request” var=“abc” value=“abcValue”/>
保存之后$ {requestScope.abc}</ br>
<c:if />
if标签用于做if判断
//test属性表示判断的条件
<c:if test="${12==12}"/>
12等于12
</c:if>
只能写if 没有if-else(可以用多个if标签实现)
<c:choose><c:when><c:otherwise>标签
作用 用于多路判断 跟switch…case…default非常接近
<%
request.setAttribute(“height”,178);
%>
choose标签开始选择判断
when标签表示每一种判断情况 test表示当前判断情况的值
<c:choose>
<c:when test="
r
e
q
u
e
s
t
S
c
o
p
e
.
h
e
i
g
h
t
>
190
"
>
小
巨
人
<
/
c
:
w
h
e
n
>
<
c
:
w
h
e
n
t
e
s
t
=
"
{ requestScope.height>190}"> 小巨人 </c:when> <c:when test="
requestScope.height>190">小巨人</c:when><c:whentest="{ requestScope.height>180}">
很高
</c:when>
<c:when test="
r
e
q
u
e
s
t
S
c
o
p
e
.
h
e
i
g
h
t
>
170
"
>
还
可
以
<
/
c
:
w
h
e
n
>
<
c
:
o
t
h
e
r
w
i
s
e
>
<
c
:
c
h
o
o
s
e
>
<
c
:
w
h
e
n
t
e
s
t
=
"
{ requestScope.height>170}"> 还可以 </c:when> <c:otherwise> <c:choose> <c:when test="
requestScope.height>170">还可以</c:when><c:otherwise><c:choose><c:whentest="{ requestScope.height>160}">
大于160
</c:when>
<c:when test="
r
e
q
u
e
s
t
S
c
o
p
e
.
h
e
i
g
h
t
>
150
"
>
大
于
150
<
/
c
:
w
h
e
n
>
<
c
:
w
h
e
n
t
e
s
t
=
"
{ requestScope.height>150}"> 大于150 </c:when> <c:when test="
requestScope.height>150">大于150</c:when><c:whentest="{ requestScope.height>140}">
大于140
</c:when>
<c:otherwise>
其它小于140的情况
</c:otherwise>
</c:choose>
剩下的小于160的情况
</c:otherwise>
</c:choose>
只会执行符合当前条件的 一旦有一个成立了 其他的就不管了(不需要使用break)
otherwise标签表示剩下的情况 choose-when 使用时 注意的点
1.标签里不要使用html注释//< !-- -->(只能使用jsp注释 <%-- 这是jsp注释–%>)
2.when标签的父标签一定是choose标签 即进行嵌套时要先写一个choose再写when
<c:forEach/>
作用:遍历输出使用
begin设置开始的索引 end设置结束的索引
var属性表示循环遍历的变量(也是当前正在遍历的数据)
1.遍历1到10,输出
<c:forEach begin=“1” end=“100” var=“i”>
${i} < /br>
</c:forEach>
2.遍历Object数组
<%
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”);
//for(Map.Entry<String,Object> entry:map.entrySet()){}
request.setAttribute(“map”,map);
%>
<c:forEach items=“requestScope.map” var=“entry”>
{entry(输出键值对) entry.key(输出key) entry.value(输出value)}
</c:forEach>
4.forEach 遍历list集合
<%
List< Student > studentList=new ArrayList< Student >();
for(int i=1;i<=10;i++){
studentList.add(new Student(i,“username”+i,“password”+i,18+i));
}
request.setAttribute(“stus”,studentList);
%>
<c:forEach items=${requestScope.stus} var=“student”>
${student.username}
</c:forEach>
forEach中属性的介绍
items表示集合
var表示遍历到的数据
begin表示开始索引值(0表示从第一条开始遍历 2->第三条开始遍历)
end表示结束的索引值 (7表示到第8条结束)
step表示遍历的步长值(表示每次遍历遍历结束的索引变化(2就是结束就到下二个) 默认是1)
varStatus属性表示当前遍历到的数据的状态
<c:forEach items=${requestScope.studentList} var=“student” varStatus=“status”>
${
status.current(获取遍历到的数据)
status.index(获取遍历的索引)
status.count(获取遍历的个数(第几个))
status.first(当前遍历的数据是否是第一条)
status.last(当前遍历的数据是否是最后一条)
status.begin(获取begin的属性值)
status.end(获取end的属性值)
status.step(获取step的属性值)
}
</c:forEach>