jsp--5.jstl

来源:互联网 发布:淘宝联盟高佣与低佣金 编辑:程序博客网 时间:2024/06/10 20:50

1      JSTL标签库简介

几乎可以使用标签完全代替Java代码(顺序语句、分支语句、循环语句)

     核心标签库:

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

     格式标签库:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

     SQL标签库:

<%@ taglib prefix="sql"uri="http://java.sun.com/jsp/jstl/sql"%>

    XML标签库:

<%@ taglib prefix="xml"uri="http://java.sun.com/jsp/jstl/xml"%>

     函数标签库:

<%@ taglib prefix="fn"uri="http://java.sun.com/jsp/jstl/functions"%>

 

2      核心标签库

2.1  表达式标签

2.1.1  <c:out>输出标签

该标签类似于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>

 

2.1.2  <c:set>变量设置标签

<c:set>标签用于在指定范围(page、request、session或application)中定义保存某个值的变量,或为指定的对象设置属性值。

<: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>

 

2.1.3  <c:remove>变量移除标签

     <c:remove var="name" [scope="范围"]/>

参数说明:

var属性:用于指定要移除的变量名。

scope属性:用于指定变量的有效范围,可选值有page、request、session、application。默认值是page。如果在该标签中没有指定变量的有效范围,那么将分别在page、request、session和application的范围内查找要移除的变量并移除。例如,在一个页面中,存在不同范围的两个同名变量,当不指定范围时移除该变量,这两个范围内的变量都将被移除。为此,在以移除变量时,最好指定变量的有效范围。

 

2.1.4  <c:catch>捕获异常标签

<c:catch>标签用于捕获程序中出现的异常,如果需要它还可以将异常信息保存在指定的变量中。该标签与Java语言中的try...catch语句类似。<c:catch>标签的语法格式如下:

      <c:catch [var="exception"]>

            …//可能存在异常的代码

      </c:catch>

参数说明:

var属性:可选属性,用于指定存储异常信息的变量。如果不需要保存异常信息,可以省略该属性。

 

2.2  URL相关标签

2.2.1  <c:import>导入标签

   jsp:include>只能导入站内资源,而<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>

 

2.2.2  <c:url>动态生成URL标签

response.encodeURL()方法的调用一个替代方法,session

<c:url>标签的语法格式如下。

      语法1:

<c:url value="url"[var="name"] [scope="范围"]        [context="context"]/>

     该语法将输出产生的URL字符串信息,如果指定了var和scope属性,相应的URL信息就不在输出,而是存储在变量中以备后用。

语法2:

<c:url value="url"var="name"] [scope="范围"][context="context"]>

         <c:param/>

         …      <!--可以有多个<c:param>标签-->

</c:url>

 

2.2.3  <c:redirect>重定向标签

<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>     

 

2.2.4  <c:param>传递参数标签

<c:param>标签只用于为其他标签提供参数信息,组合可以实现动态定制参数,从而使标签可以完成更复杂的程序应用。

参数说明如下:

name属性:用于指定参数名,可以引用EL。如果参数名为null或是空,该标签将不起任何作用。

value属性:用于指定参数值,可以引用EL。如果参数值为null,该作为空值处理。     

 

2.3  流程控制标签

2.3.1  <c:if>条件判断标签

     <cif>条件判断标签没有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>

 





2.3.2  <c:choose>条件选择标签

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

<c:choose>标签的语法格式如下:

    <c:choose>

       标签体<!--由<c:when>标签和<c:otherwise>标签组成-->

    </c:choose>

 

2.3.3  <c:when>条件测试标签

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

<c:when test="condition">

         标签体

</c:when>

 

2.3.4  <c:otherwise>其他条件标签

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

<c:otherwise>标签的语法格式如下:

<c:otherwise>

         标签体

</c:otherwise>

 

<c:choose>    <c:when test="${items.sex == 0}">男    </c:when>    <c:when test="${items.sex == 1}">女    </c:when>    <c:otherwise>    </c:otherwise></c:choose>


2.4  循环标签

2.4.1  <c:forEach>循环标签

<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>

 

2.4.2  <c:forTokens>迭代标签

   <c:forTokens>迭代标签可以用指定的分隔符将一个字符串分割开,根据分割的数量确定循环的次数。<c:forTokens>标签的语法格式如下:

<c:forTokens items="String"delims="char" [var="name"] [begin="start"][end="end"] [step="len"][varStatus="statusName"]>

         标签体

</c:forTokens>

 

3      格式标签库

3.1  数字


 

 

3.1  日期

 

 

<fmt:formatDate  value="${items.gmt_create }"  pattern="yyyy-MM-dd HH:mm:ss" />

数据库存储为字符串


 

<fmt:parseDate value="${user.gmtCreate}" pattern="yyyy-MM-dd" var="masterDate"/><fmt:formatDate value="${masterDate}" pattern="yyyy-MM-dd"/>

 

 

0 0