一、JSTL简介
1、JSTL简介
不仅提供了条件判断的逻辑标签,还提供了对应JSP标准标签的扩展标签以及更多的功能标签。
(1)JSTL提供的标签库(五大类):
核心标签库:提供条件判断、属性访问、URL及错误处理等标签。
I18N兼容格式标签库:提供数字、日期等的格式化功能,以及区域、信息、编码处理等国际化功能的标签。
SRL标签库:提供基本的数据库查询、更新、设置数据源等功能的标签。
XML标签库:提供XML解析、流程控制、转换等功能的标签。
函数标签库:提供常用字串处理的自定义EL函数标签库。
(2)要使用JSTL标签库,必须在JSP网页上使用taglib指示元素定义前置名称与uri参考。
例1、要是用核心标签库,可以进行如下定义:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
2、核心标签库
(1)流程处理标签
当JSP页面必须根据某个条件来安排网页输出时,则可以使用流程标签。例如。想要依用户输入的名称、密码请求参数,来决定是否显示这个画面,或是想要用表格输出是个数据等。
<c:if>标签:可根据某个表达式的结果,决定是否显示Body的内容。
<c:if>标签的test属性中可以放置EL表达式,如果表达式的结果为true,则会将
<c:if>Body输出。
<c:if>标签没有对应的
<c:else>标签。如果想要在某条件式成立时显示某些内容,不成立时就显示另一内容,则可以使用<c:choose>、<c:when>及<c:otherwise>标签。
<c:when>及<c:otherwise>标签必须放在<c:choose>标签中。当
<c:when>及<c:otherwise>标签的test运算结果为true时,会输出<c:when>的Body内容,而不理会<c:otherwise>内容。
<c:choose>标签中可以有多个<c:when>标签,此时会从上往下进行测试,如果有个<c:when>标签的test运算结果为true就输出其Body内容,之后的
<c:when>就不会做测试,如果所有的
<c:when>测试都不成立,就回输出<c:otherwise>的内容。
<c:forEach>标签:
<c:forEach>标签的items属性可以是数组、Collection、Iterator、Enumeration、Map与字符串,每次会依序从items指定的对象中取出一个元素,并指定给var属性设置的变量,之后就可以在
<c:forEach>标签Body中使用var属性所设置的变量来取得该元素。
如果items指定的是Map,则设置给var的对象会是Map.Entry,这个对象有getKey()与getValue()方法,可以取得键与值。