JSTL
标签的使用
java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,是一个定制标签类库的集合,用于解决一些常见问题,例如迭代一个映射或集合、条件测试、XML处理,甚至数据库和访问数据库等操作。
说明:标签操作的都只能是域对象。
根据功能不同分为五大子类库:
Core (核心库) 标签库的URI:http://java.sun.com/jsp/jstl/core 常用前缀:c
I18N(国际化) 标签库的URI:http://java.sun.com/jsp/jstl/fmt 常用前缀:fmt
SQL 标签库的URI:http://java.sun.com/jsp/jstl/sql 常用前缀:sql
XML 标签库的URI:http://java.sun.com/jsp/jstl/xml 常用前缀:x
Functions 标签库的URI:http://java.sun.com/jsp/jstl/functions 常用前缀:fn
下面说一说JSTL标签库中的常用重要标签,如迭代集合等几个标签。
核心标签库:
Core (核心库)标签库的URI:http://java.sun.com/jsp/jstl/core
包含Web应用的常见工作,比如:循环、表达式赋值、基本输入输出等……
格式化标签库:
I18N(国际化) 标签库的URI:http://java.sun.com/jsp/jstl/fmt
用来格式化显示数据的工作,比如:对不同区域的日期格式化等……
在JSP页面使用JSTL标签库,必须以下列格式使用 taglib 指令引入相关类库:
<%@taglib uri="" prefix=""%>
例如:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
另外还需要导入两个jar包 jstl.jar 和standard.jar,因为我用的maven,所以需要添加两个依赖,如下:
<!--jstl表达式依赖-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!--standard标签库-->
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
条件动作标签
根据值不同输出不同的结果,例如在java中是利用 if、if else、switch语句来进行处理的,jstl也提供了相关标签:if、choose、when、otherwise。
If标签
<%--
if标签
格式:
<c:if test="${条件判断表达式}" var="限域变量名(也就是存放结果的变量)" scope="把结果放在哪个域">
……
</c:if>
注意:
1. 标签操作的一般都是域对象
2. if标签没有else
--%>
<%
request.setAttribute("num",10);
%>
例:-------------------------------------------------------------------------------------------
<c:if test="${num>0}" var="result" scope="request">
数值大于0
</c:if>
从request域里取出结果变量
${result}
coose、when 和 otherwise 标签
相当于java中的 switch 和case ,otherwise相当于switch语句中的default。
格式如下:
<c:choose>
<c:when test="${num == 1}">
1
</c:when>
<c:when test="${num == 2}">
2
</c:when>
<c:when test="${num == 3}">
3
</c:when>
<c:otherwise>
其他
</c:otherwise>
</c:choose>
迭代标签
第一种:相当于for循环
<c:forEach var="i" begin="0" end="10" step="2">
${i}<br>
</c:forEach>
结果:
第二种:相当于foreach 循环
相当于例如:
for(String str : list){
}
jstl:items:要循环的数据 var:用来接受当前遍历的成员
<c:forEach items="${list}" var="str">
${str}
</c:forEach>