今天又是一个学习JAVA的好日子!
JSP 标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题,例如迭代一个映射或者集合、条件测试、XML 处理,甚至数据库和访问数据库操作等。
在 JSP 页面使用 JSTL 类库,必须以下列格式使用 taglib 指令:
JSTL的使用
1、引入标签库的jar包(每个项目拷贝一次)
jstl.jar和standard.jar
2、在jsp页面通过taglib指令导入指定的类库(每个jsp页面需要单独引用)
<%@taglib uri=“要引入的标签库的路径” prefix=“标签库的前缀” %>
前缀可以自定义,程序员习惯设置为指定的前缀名
core核心库:c
fmt格式化标签库:fmt
注:jstl标签操作的一般都是域对象
if标签
格式:
无主体内容:< c:if test=“条件” var=“限域变量名” scope=“域对象的范围 page|request|session|application”></c:if>
有主体内容:
< c:if test=“条件” var=“限域变量名” scope=“域对象的范围 page|request|session|application”>
主体内容
< /c:if>
常用属性:
test:判断的条件,返回true或false,操作的是域对象的值;必须要设置的属性
var:限域变量名,存在域对象中的变量名,可以通过el表达式获取到该变量名对应的值
scope:限域变量名的域范围,四个范围 page|request|session|application
注:if标签没有对应else,所以如果需要做else判断,需要设置两个完全相反的if条件判断
choose、when和otherwise标签
格式:
< c:choose>
< c:when test=“条件”>
满足条件会执行的内容
< /c:when>
< c:when test=“条件”>
满足条件会执行的内容
< /c:when>
…
< c:otherwise>
当所有的when条件不成立时,才会执行的内容
</c:otherwise
< /c:choose>
注意:
1、choose标签中只能包含when和otherwise标签,而when和otherwise标签中可以嵌套其他标签
报错:Illegal child tag in “c:choose” tag
2、choose和otherwise标签没有属性,而when标签必须设置test属性
3、choose标签中至少有一个when标签,可以没有otherwise标签
4、when标签必须设置在otherwise标签之前
5、otherwise标签只有在所有的when标签都不成立的条件下,才会执行
< c:choose>
<c:when test="
n
u
m
<
60
"
>
<
h
3
>
不
及
格
!
<
/
h
3
>
<
/
c
:
w
h
e
n
>
<
c
:
w
h
e
n
t
e
s
t
=
"
{num < 60 }"> <h3>不及格!</h3> </c:when> <c:when test="
num<60"><h3>不及格!</h3></c:when><c:whentest="{num == 60 }">
< h3>运气不错!< /h3>
< /c:when>
< c:when test="${num > 60 && num < 80 }">
< h3>哎哟不错哦!< /h3>
< /c:when>
< c:otherwise>
< h3>你很棒棒哦!< /h3>
< /c:otherwise>
< /c:choose>
forEach标签
格式:
1、遍历内容多次,相当于java中 for(int i = 0; i < length; i++) {}
< c:forEach begin=“开始数” end=“结束数” var=“限域变量名” step=“间隔数”>
${限域变量名}
< /c:forEach>
2、迭代集合,相当于java中的 for(String str : strings) {}
< c:forEach items=“要被迭代的数据(List、Map等)” var=“限域变量名” varStatus=“当前成员的相关信息”>
${限域变量名}
< /c:forEach>
循环内容多次(实现九九乘法表)
< table border=“1” style=“border-collapse: collapse;”>
< c:forEach begin=“1” end=“9” var=“i” step=“1”>
< tr>
<c:forEach begin=“1” end="
i
"
v
a
r
=
"
j
"
s
t
e
p
=
"
1
"
>
<
t
d
>
{i }" var="j" step="1"> < td>
i"var="j"step="1"><td>{j } * ${i } = ${j*i }< /td>
< /c:forEach>
< /tr>
< /c:forEach>
< /table>
< table border=“1” style=“border-collapse: collapse;”>
<%
for(int i = 1; i < 10; i++ ) {
%>
< tr>
<%
for(int j = 1; j <= i; j++) {
%>
< td>
<%=j %> * <%=i %> = <%=j*i %>
< /td>
<%
}
%>
< /tr>
<%
}
%>
< /table>
formatNumber标签
格式:
无主体内容:
< fmt:formatNumber value=“要被格式化的值” type=“格式化的类型number|percent|currency” var=“限域变量名” />
有主体内容:
< fmt:formatNumber type=“格式化的类型number|percent|currency” var=“限域变量名”>
要被格式化的值
< /fmt:formatNumber>
type属性的默认值是number
注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。
formatDate标签
< fmt:formatDate value=“要格式化的日期型数据” type=“日期类型|时间类型|日期+时间类型” dateStyle=“日期的格式” timeStyle=“时间的格式” pattern=“具体的格式” var=“限域变量名”/>
常用属性:
value:取值的是日期型
type:格式的类型
date日期格式 默认值
time时间格式
both日期+时间格式
dateStyle:日期格式的具体格式 Long、short、Full等
timeStyle:时间格式的具体格式Long、short、Full等
pattern:具体的格式化格式 y M d H m s
注:如果设置了var属性,格式化后的结果会被限域变量名所接收;若未设置var属性,则格式化的结果会直接显示。
<fmt:formatDate value=" ${myDate }"/>
<fmt:formatDate value=" ${myDate }" type=“date” var=“date1”/>
d
a
t
e
1
<
b
r
>
<
f
m
t
:
f
o
r
m
a
t
D
a
t
e
v
a
l
u
e
=
"
{date1 }<br> <fmt:formatDate value="
date1<br><fmt:formatDatevalue="{myDate }" type=“time” /> < br>
<fmt:formatDate value="
m
y
D
a
t
e
"
t
y
p
e
=
"
b
o
t
h
"
/
>
<
b
r
>
<
f
m
t
:
f
o
r
m
a
t
D
a
t
e
v
a
l
u
e
=
"
{myDate }" type="both" /> <br> <fmt:formatDate value="
myDate"type="both"/><br><fmt:formatDatevalue="{myDate }" type=“both” dateStyle=“Long” timeStyle=“Long”/> < br>
<fmt:formatDate value="
m
y
D
a
t
e
"
p
a
t
t
e
r
n
=
"
y
y
y
y
−
M
M
−
d
d
H
H
:
m
m
:
s
s
"
/
>
<
b
r
>
<
f
m
t
:
f
o
r
m
a
t
D
a
t
e
v
a
l
u
e
=
"
{myDate }" pattern="yyyy-MM-dd HH:mm:ss"/> <br> <fmt:formatDate value="
myDate"pattern="yyyy−MM−ddHH:mm:ss"/><br><fmt:formatDatevalue="{myDate }" pattern=“yyyy/MM/dd HH:mm:ss”/> < br>
< fmt:formatDate value="${myDate }" pattern=“dd/MM/yy HH:mm:ss”/> < br>
parseNumber标签
利用 parseNumber 标签可以将数字、货币或百分比的字符串表示法解析成指定语言环 境的数字。即解析一个代表着数字,货币或百分比的字符串。
< fmt:parseNumber type=“需要被格式化的字符串的类型number|percent|currency”>
要格式化的指定格式的字符串
< /fmt:parseNumber>
parseDate标签
< fmt:parseDate type=“date|time|both” pattern=“日期字符串对应的格式”>< /fmt:parseDate>