JSTL标签库
1.什么是jstl?
jstl全称为 jsp standard tag library 即jsp标准标签库。它与el表达式一样,也是为了替换掉jsp中的java代码。它提供了一系列的jsp标签,实现了java的基本功能:集合的遍历、数据的输出、字符串的处理、数据的格式化等等。jstl可以说是el的补充、扩展,经常与el一起使用。
2.常见子标签库
核心标签库: 包含 web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。(常用)
格式化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
函数标签库:用来读取已经定义的某个函数。
xml 标签库:用来访问 xml 文件的工作,这是 jstl 标签库的一个特点。(基本不用)
数据库标签库:可以做访问数据库的工作。(基本不用)
3.标签库导入及使用
1.下载jar包,并导入
2.使用<%@ taglib %>引入标签库,设置uri和prefix的属性值。
核心标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
格式化标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
函数标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
xml 标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
数据库标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
uri和prefix属性的值可以在jstl-impl-1.2.2.jar/meta-inf中可以找到。
3.使用
语法:<前缀:标签名 属性名=“属性值”>
注:前缀为引入时的prefix,标签库的前缀是固定的不可自定义。
4.核心标签库
1.<c:out>用于把数据输出到 jsp 页面中显示
2.<c:set>将值存储到作用域或为 javabean 中的变量属性赋值
3.<c:remove>删除存在于 scope 中的变量
4.c:if 标签:条件判断(单条件,相当于java的if或if-else)
补充:c:if 标签一般用于只有一个条件的情况。
需要用到类似于if-else结构是可以设定var,如var="result",然后在另一个c:if 标签中的test对对结果进行取反,如test="${!result}
5.c:choose 、 c:when、 c:otherwise标签:条件判断(多条件,相当于if-else-if)
例:
1 <c:choose> 2 <c:when test="${score >=80 }"> 3 优秀 4 </c:when> 5 <c:when test="${score >=70 }"> 6 良好 7 </c:when> 8 <c:when test="${score >=60 }"> 9 及格 10 </c:when> 11 <c:otherwise> 12 不及格 13 </c:otherwise> 14 </c:choose>
使用时需要注意以下几点:
1.c:when必须在c:otherwise之前出现
2.c:otherwise只能出现一次
3.c:when和c:when和c:otherwise之前不允许出现其他任何字符
6.c:foreach标签:循环,相当于java的迭代器
补充:
begin & end:只能为数字,当没有items属性时,var的值从begin数字循环到end数字;当有items属性时,begin & end就表示下标。
varstatus的属性:
first(判断当前循环体是否为第一个)
last(判断当前循环体是否为最后一个)
count(当前循环次数)
index(当前循环体的下标)
varstatus用法如:
varstatus="status"
${status.first} ${status.last} ${status.count} ${status.index}
5.格式化标签库
1.fmt:formatdate:将一个时间对象按指定格式输出
格式:<fmt:formatdate value=“${ date }”pattern=“yyyy年mm月dd日”/>
2.fmt:parsedate:将一个字符串按指定格式解析成时间对象
格式:<fmt:parsedate value="${ds}" var="date" pattern="yyyy/mm/dd hh:mm:ss">
6.函数标签库
函数标签库,el函数库、fn标签库。需要在el表达式中使用。
如:${fn:length(xxx) }:会到作用域中去找xxx属性,然后输出它的长度,没找到就为0
fn标签库中的标签与java中的string对象方法基本相同。