JSTL概述
JSTL 全名为 JavaServer Pages Standard TagLibrary,即jsp标准标签库。JSTL 是由 JCP (Java Community Process)所指定的标准规格,它主要提供给 Java Web 开发人员一个标准通用的标签函数库。
Web 程序开发人员能够利用 J STL 和 EL 来开发 Web 程序,取代传统直接在页面上嵌入 Java 程序(Script)的做法,以提高程序可读性、维护性和方便性。
JSTL简介
JavaServer Pages Standard TagLibrary ( 1. 1 ) ,它的中文名称为 JSP 标准标签函数库。JSTL 是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环、XML 文件剖析、数据库查询及国际化和文字格式标准化的应用等。JSTL 所提供的标签函数库主要分为五大类:
• 核心标签(用得最多)
• 国际化标签(I18N格式化标签)
• 数据库标签(SQL标签,很少使用)
• XML标签(几乎不用)
• JSTL函数(EL函数)
安装 JSTL
1)下载jstl库
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
2)jstl库安装(拷贝导入)
下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到创建的工程中的/WEB-INF/lib/下即可。
3)jstl库引入
在需要用到jstl库的jsp页面的开头引入jstl库,格式如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
prefix为引用库的前缀,建议不要改动,url必须为http://java.sun.com/jsp/jstl/core
核心标签库
JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签、param标签。
<c:out>标签
<c:out>标签主要是用来输出数据对象(字符串、表达式)的内容或结果。
在使用Java脚本输出时常使用的方式为: <% out.println(“字符串”)%> 或者 <%=表达式%> ,在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
<c:out>语法如下:
• <c:out value=”字符串” [escapeXml=”true|false”] [default=”默认值”] >
• <c:out value=”EL表达式” [escapeXml=”true|false”] [default=”默认值”] >
<c:set>标签
<c:set>标签用于把某一个对象存在指定的域范围内,或者将某一个对象存储到Map或者JavaBean对象中。
<c:set>语法如下:
<c:set value=”值1” var=”name1” [scope=”page|request|session|application”]/>
含义:把一个变量名为name1值为“值1”的变量存储在指定的scope范围内。
<c:remove>标签
<c:remove>标签主要用来从指定的JSP范围内移除指定的变量。
<c:remove>语法如下:
<c:remove var=”变量名” [scope=”page|request|session|application”]/>其中var属性是必须的,scope可以以省略。
<c:catch>标签
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常。
<c:catch>语法如下:
<c:catch [var=“varName”]>容易产生异常的代码</c:catch> var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<c:if>标签
<c:if>标签和程序中的if语句作用相同,用来实现条件控制。
<c:if>语法如下:
【语法1】:没有标签体内容(body)
<c:if test=“testCondition” var=“varName” [scope=“{page|request|session|application}”]/>
【语法2】:有标签体内容
<c:if test=“testCondition” [var=“varName”] [scope=“{page|request|session|application}”]>
标签体内容
</c:if>
• test属性用于存放判断的条件,一般使用EL表达式来编写。
• var属性用来存放判断的结果,类型为true或false。
• scopes属性用来指定var属性存放的范围。
流程控制标签
流程控制标签包括choose标签、when标签、otherwise标签.这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用.类似 “if-else if-else” 的条件判断结构.
<c:choose><c:when test="条件1">//业务逻辑1<c:when><c:when test="条件2">//业务逻辑2<c:when><c:when test="条件n">//业务逻辑n<c:when><c:otherwise>//业务逻辑</c:otherwise></c:choose>
<c:forEach>标签
该标签根据循环条件遍历集合(Collection)中的元素。
<c:forEach>语法如下:
<c:forEach var=”name” items=”Collection” varStatus=”StatusName” begin=”begin” end=”end” step=”step”>本体内容
</c:forEach>
• var设定变量名用于存储从集合中取出元素。
• items指定要遍历的集合。
• begin、end用于指定遍历的起始位置和终止位置(可选)。
• step指定循环的步长。
• varStatus描述循环的状态信息。
对于varStatus,可以取值index\count\first\last\current。
• current:当前这次迭代的(集合中的)项
• index:当前这次迭代从 0 开始的迭代计数
• count:当前这次迭代从 1 开始的迭代计数
• first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false
• last:用来表明当前这轮迭代是否为最后一次迭代的标志,返回true/false