Jstl标签

JSTL标签库简介

虽然JSTL叫做标准标签库,实际上它是由5个功能不同的标签库组成。这5个标签库分别是核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库等。在使用这些标签之前必须在JSP页面的顶部使用<%@ taglib%>指令定义引用的标签库和访问前缀。
      使用核心标签库的taglib指令格式如下:
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      使用格式标签库的taglib指令格式如下:
     <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
      使用SQL标签库的taglib指令格式如下:
     <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
     使用XML标签库的taglib指令格式如下:
     <%@ taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml"%>
     使用函数标签库的taglib指令格式如下:
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

JSTL的配置

由于JSTL还不是JSP 2.0规范中的一部分,所以在使用JSTL之前,需要安装并配置JSTL。下面将介绍如何配置JSTL
       JSTL标签库可以到Oracle公司的官方网站上下载,在浏览器地址栏中输入“http://java.sun.com/products/jsp/jstl”,将会自动转发至Oracle公司官方下载网址。JSTL的标签库下载完毕后,就可以在Web应用中配置JSTL标签库。配置JSTL标签库有两种方法,一种是直接将jstl-api-1.2.jarjstl-impl-1.2.jar复制到Web应用的WEB-INF\lib目录中即可;另一种是在Eclipse中通过配置构建路径的方法进行添加。

表达式标签

<c:out>标签用于将表达式的值输出到JSP页面中,该标签类似于JSP的表达式<%=表达式%>,或者EL表达式${expression}<c:out>标签有两种语法格式,一种没有标签体,另一种有标签体,这两种语言的输出结果完全相同。<c:out>标签的具体语法格式如下:
      语法1——没有标签体:
      <c:out value="expression" [escapeXml="true|false"]           [default="defaultValue"]/>
      语法2——有标签体:
     <c:out value="expression" [escapeXml="true|false"]>
 defalultValue
    </c:out>


<c:set>标签用于在指定范围(pagerequestsessionapplication)中定义保存某个值的变量,或为指定的对象设置属性值。使用该标签可以在页面中定义变量,而不用在JSP页面中嵌入打乱HTML排版的Java代码。<:set>标签有4种语法格式。
        语法1:在scope指定的范围内将变量值存储到变量中。
                  <c:set var="name" value="value" [scope="范围"]/>
        语法2:在scope指定的范围内将标签体存储到变量中。
         <c:set var="name" [scope="page|request|session|application"]>
       标签体
         </c:set>
      语法3:将变量值存储在target属性指定的目标对象的propName属性中
        <c:set value="value" target="object" property="propName"/>
      语法4:将标签体存储到target属性指定的目标对象的propName属性中
       <c:set target="object" property="propName">
 标签体
       </c:set>


  <c:remove>标签用于移除指定的JSP范围内的变量,其语法格式如下:
      <c:remove var="name" [scope="范围"]/>
      参数说明:
þ var属性:用于指定要移除的变量名。
þ scope属性:用于指定变量的有效范围,可选值有pagerequestsessionapplication。默认值是page。如果在该标签中没有指定变量的有效范围,那么将分别在pagerequestsessionapplication的范围内查找要移除的变量并移除。例如,在一个页面中,存在不同范围的两个同名变量,当不指定范围时移除该变量,这两个范围内的变量都将被移除。为此,在以移除变量时,最好指定变量的有效范围。

 

<c:catch>标签用于捕获程序中出现的异常,如果需要它还可以将异常信息保存在指定的变量中。该标签与Java语言中的try...catch语句类似。<c:catch>标签的语法格式如下:
       <c:catch [var="exception"]>
             …//可能存在异常的代码
       </c:catch>
      参数说明:
       var属性:可选属性,用于指定存储异常信息的变量。如果不需要保存异常信息,可以省略该属性。

URL相关标签

<c:import>标签可以导入站内或其他网站的静态和动态文件到Web页面中,例如,使用<c:import>标签导入其他网站的天气信息到自己的网页中。<c:import>标签与<jsp:include>动作指令类似,所不同的是<jsp:include>只能导入站内资源,而<c:import>标签不仅可以导入站内资源,也可以导入其他网站的资源<c:import>标签的语法格式如下:
      语法1
      <c:import url="url" [context="context"] [var="name"] [scope="范围"] [charEncoding="encoding"]>
      [标签体]
     </c:import>
      语法2
     <c:import url="url" varReader="name" [context="context"]   [charEncoding="encoding"]>
 [标签体]
     </c:import>


<c:url>标签用于生成一个URL路径的字符串,这个生成的字符串可以赋予HTML<a>标记实现URL的连接,或者用这个生成的URL字符串实现网页转发与重定向等。在使用该标签生成URL时,还可以与<c:param>标签相结合动态添加URL的参数信息。<c:url>标签的语法格式如下。
       语法1
       <c:url value="url" [var="name"] [scope="范围"]        [context="context"]/>
      该语法将输出产生的URL字符串信息,如果指定了varscope属性,相应的URL信息就不在输出,而是存储在变量中以备后用。
语法2
     <c:url value="url" var="name"] [scope="范围"] [context="context"]>
 <c:param/>
 … <!--可以有多个<c:param>标签-->
     </c:url>

<c:redirect>标签可以将客户端发出的request请求重定向到其他URL服务端,由其他程序处理客户的请求。而在这期间可以对request请求中的属性进行修改或添加,然后把所有属性传递到目标路径。该标签的语法格式如下。
      语法1:该语法格式没有标签体,并且不添加传递到目标路径的参数信息。
            <c:redirect url="url" [context="/context"]/>
       语法2:该语法格式将客户请求重定向到目标路径,并且在标签体中使用<c:param>标签传递其他参数信息。
          <c:redirect url="url" [context="/context"]>
 <c:param/>
              …<!--可以有多个<c:param>标签-->
          </c:redirect>

 

<c:param>标签只用于为其他标签提供参数信息,它与<c:import><c:redirect><c:url>标签组合可以实现动态定制参数,从而使标签可以完成更复杂的程序应用。<c:param>标签的语法格式如下:
     <c:param name="paramName" value="paramValue"/>
     参数说明如下:
þ name属性:用于指定参数名,可以引用EL。如果参数名为null或是空,该标签将不起任何作用。
þ value属性:用于指定参数值,可以引用EL。如果参数值为null,该作为空值处理。 

 

流程控制标签

<cif>条件判断标签可以根据不同的条件去处理不同的业务。它与Java语言中的if语句类似,只不过该语句没有else标签。<c:if>标签有两种语法格式。
      语法1:该语法格式会判断条件表达式,并将条件的判断结果保存在var属性指定的变量中,而这个变量存在于scope属性所指定的范围中。
     <c:if test="condition" var="name"   [scope=page|request|session|application]/>
      语法2:该语法格式不但可以将test属性的判断结果保存在指定范围的变量中,还可以根据条件的判断结果去执行标签体。标签体可以是JSP页面能够使用的任何元素,例如,HTML标记、Java代码或者嵌入其他JSP标签。
     <c:if test="condition" var="name" [scope="范围"]>
 标签体
     </c:if>

 

<c:choose>标签可以根据不同的条件去完成指定的业务逻辑,如果没有符合的条件会执行默认条件的业务逻辑。<c:choose>标签只能作为<c:when><c:otherwise>标签的父标签,而要实现条件选择逻辑可以在<c:choose>标签中嵌套<c:when><c:otherwise>标签来完成。<c:choose>标签的语法格式如下:
     <c:choose>
        标签体<!--<c:when>标签和<c:otherwise>标签组成-->
     </c:choose>

 

 <c:when>条件测试标签是<c:choose>标签的子标签,它根据不同的条件去执行相应的业务逻辑,可以存在多个<c:when>标签来处理不同条件的业务逻辑。<c:when>标签的语法格式如下:
     <c:when test="condition">
 标签体
     </c:when>


<c:otherwise>标签也是<c:choose>标签的子标签,用于定义<c:choose>标签中的默认条件处理逻辑,如果没有任何一个结果满足<c:when>标签指定的条件,将会执行这个标签体中定义的逻辑代码。在<c:choose>标签范围内只能存在一个该标签的定义。            <c:otherwise>标签的语法格式如下:
      <c:otherwise>
          标签体
     </c:otherwise>

 循环标签

 

<c:forEach>标签的语法格式如下。
     语法1:集合成员迭代
         <c:forEach items="data" [var="name"] [begin="start"]  [end="finish"] [step="step"] [varStatus="statusName"]>
 标签体
        </c:forEach>
     在该语法中,items属性是必选属性,通常使用EL指定,其他属性均为可选属性。
     语法2:数字索引迭代(不一定是数组,可能是某一范围内的变量)
        <c:forEach begin="start" end="finish" [var="name"] [varStatus="statusName"] [step="step"]>
 标签体
       </c:forEach>

 

<c:forTokens>迭代标签可以用指定的分隔符将一个字符串分割开,根据分割的数量确定循环的次数。<c:forTokens>标签的语法格式如下:
      <c:forTokens items="String" delims="char" [var="name"] [begin="start"] [end="end"] [step="len"] [varStatus="statusName"]>
 标签体
      </c:forTokens>

你可能感兴趣的:(Jstl标签)