zoukankan      html  css  js  c++  java
  • 第五章_JSTL

    5.1、下载JSTL

    http://jstl.java.net

    5.2JSTL类库

    类别

    下属功能

    URI

    前缀

    Core

    变量支持

    http://java.sun.com/jsp/jstl/core

    c

    流向控制

    URL管理

    杂项

    XML

    Core

    http://java.sun.com/jsp/jstl/xml

    x

    流向控制

    转换

    I18n

    语言环境

    http://java.sun.com/jsp/jstl/fmt

    fmt

    消息格式化

    数字和日期格式化

    数据库

    SQL

    http://java.sun.com/jsp/jstl/sql

    sql

    功能

    集合长度

    http://java.sun.com/jsp/jstl/functions

    fn

    字符串操作


    为了在JSP页面中使用JSTL类库,必须下面列格式使用taglib指令:

    <%@ taglib uri=”uri” prefix=”prefix”%>

    比如,为了使用Core类库,必须在JSP页面开头处这样声明:

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

    5.3、通用动作指令

    5.3.1out标签

    Out标签对表达式进行运算。并将结果输出到当前的JspWriter

    Out的语法有两种形式:

    <c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”] />
    <c:out value=”value” [escapeXml=”{true|false}”]>
    Default value
    </c:out>

    5.3.2set标签

    利用set标签能够完毕下面工作:

    1、创建一个字符串和引用该字符串的一个限域变量。

    2、创建一个限域变量,并引用已经存在的某一个限域变量。

    3、设置限域对象的属性。

    假设利用set创建限域变量,那么处于该标签之后的整个jsp页面将都能够使用该变量。

    Set标签的语法有4种形式。

    第一种形式用来创建一个限域变量,在该变量的value属性中能够指定要创建的字符串。或者现有的限域对象。

    No1

    <c:set value=”value” var=”varName” [scope=”{page|request|session|application}”] />

    No2

    <c:set value=”value” var=”varName” [scope=”{page|request|session|application}”] >
    Body content
    </c:set>

    No3、设置限域对象的属性值。Target属性指定限域对象,property属性指定限域对象的属性。

    要赋给该属性的值通过value属性进行设置:

    <c:set target=”target” property=”propertyName” value=”value” />

    比如,以下的set标签是将字符串Tokyo赋给限域对象addresscity属性:

    <c:set target=”${address}” property=”city” value=”Tokyo” />

    No4、值是做为主体内容传递的:

    <c:set target=”target” property=”propertyName”>
    Body content
    </c:set>
     

    5.3.3remove标签

    利用remove标签删除限域变量,语法例如以下:

    <c:remove var=”varName” [scope=”{page|request|session|application}”] />

    注意:限域变量引用的对象并没有被删除。

    因此,假设还有一个限域对象也在引用这个对象,那么仍然能够通过另外这个限域对象来訪问该对象。

    5.4、条件式动作指令

    JSTL中有4个标签能够运行条件式动作指令:ifchoosewhenotherwise

    5.4.1if标签

    <c:if test=”testCondition” var=”varName” [scope=”{page|request|session|application}” />

    或者

    <c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”>
    Body content
    </c:if>

    属性

    类型

    描写叙述

    Test+

    Boolean

    决定是否应该处理某些现有主体内容的測试内容

    Var

    String

    引用測试条件的限域变量名称。var的类型为boolean

    Scope

    String

    var设置的限域变量的范围

    5.4.2choosewhenotherwise标签

    Choosewhen标签的作用与java中的switchcasekeyword相似,也就是说,它们为互相排斥的条件式运行提供相关内容。Choose标签内部必须嵌有一个或多个when标签,每一个when标签代表能够运行运算和处理的一种情况。

    Otherwise标签用于默认的条件代码块,假设全部when标签的測试条件运算结果都不为true。就会运行该代码块。假设有otherwise标签。它必须放在最后一个when标签之后。

    比如:

    <c:choose>
    <c:when test=”${param.status==’full’}”>
    You atr a full member
    </c:when>
    <c:when test=”${param.status==’student’}”>
    You are a student memeber
    </c:when>
    <c:otherwise>
    Please register
    </c:otherwise>
    </c:choose>

    5.5iterator动作指令

    两个能够运行iterator动作指令的标签:forEachforTokens

    5.5.1forEach标签

    forEach的语法有两种形式,第一种是将body内容反复一定的次数:

    <c:forEach [var=”varName”] begin=”begin” end=”end” step=”step”>
    Body content
    <c:forEach>

    另外一种形式用于迭代一个对象集合:

    <c:forEach items=”collection” [var=”varName”] [varStatus=”varStatusName”]
    [begin=”begin”] [end=”end”] [step=”step”]>
    Body content
    </c:forEach>

    属性

    类型

    描写叙述

    Var

    String

    引用当前迭代项目的限域变量名称

    Items+

    支持的不论什么类型

    要迭代的对象集合

    varStatus

    String

    保存迭代状态的限域变量名称,它的值类型为javax.servlet.jsp.jstl.core.LoopTagStatus

    varStatus定义了一个循环变量var,循环状态变量中保存了循环进行时保存的信息,包含以下几个属性:

    index:当前循环索引號

    count成员总数

    last:是否为最后一个成员

    index的值是迭代的索引值+begin

    Begin+

    Int

    假设指定了items,那么迭代将从处于指定索引的项開始,该集合中的第一个项索引为0。假设没有指定items,迭代将从该值设定的索引開始。

    如有指定,begin的值必须大于或者等于0

    End+

    Int

    假设指定了items,那么迭代将结束于处于指定索引的项;假设没有指定的items,那么当索引到达指定值时,迭代结束。

    Step+

    Int

    步长,迭代会从集合的第一个step项開始。依据step步长逐个地进行,假设有step属性,那么它的值必须大于或者等于1


    5.5.2forTokens标签

    forTokens标签可用于迭代以特定分界符分隔的token。这个动作指令的语法例如以下:

    <c:forTokens items=”stringOfTokens” delims=”delimiters” [var=”varName”]  [varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
    Body content
    </c:forTokens>

    属性

    类型

    描写叙述

    Var

    String

    引用当前迭代项的限域变量名称

    Items+

    String

    要迭代的token字符串

    varStatus

    String

    保存迭代状态的限域变量名称,它的值类型为javax.servlet.jsp.jstl.core.LoopTagStatus

    Begin+

    Int

    迭代的起始索引,这里的索引是从0開始的。假设有begin属性,那么它的值必须大于或者等于0

    End+

    Int

    迭代的结束索引,这里的索引是从0開始的。

    Step

    Int

    迭代会从集合的第一个step项開始,逐个地进行。假设有step属性,那么它的值必须大于或者等于1

    Delims+

    String

    一组分节符

    以下是一个forTokens范例:

    <c:forTokens var=”item” items=”Argentina,Brazil,Chile” delims=”,”>
    <c:out value=”${item}” /><br />
    </c:forTokens>
    当它放在jsp中时,上述forTokens将产生下面结果:
    Argentina
    Brazil
    Chile

    5.6、格式化动作指令

    JSTL提供了格式化和解析数字和日期的标签,有:formatNumberformatDatetomeZonesetTimeZoneparseNumberparseDate

    5.7、函数

    除了定制动作指令之外。JSTL1.11.2中还定义了一组标准函数,能够用在EL表达式中,这些函数分组放在函数标签类库中。

    当使用这些函数时。必须在JSP上使用taglib指令。

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

    调用函数时。要以以下这样的格式来使用EL

    ${fn:functionName}

    这里的functionName是函数名称

    5.7.1contains函数

    语法例如以下:

    Contains(String,substring)

    比如以下这些EL表达式都返回true

    <c:set var=”myString” value=”Hello World” />
    ${fn:contains(myString, “Hello”)}
    ${fn:contains(“Stella Cadente”, “Cadente”)}

    5.7.2containsIgnoreCase函数

    containsIgnoreCase函数与contains函数类似,但其检測是区分大写和小写的,详细语法例如以下:

    containsIgnoreCase(String, substring)

    5.7.3endsWith函数

    endsWith函数检測某个字符串是否以指定的后缀结尾。其返回值是一个Boolean值,详细语法例如以下:

    endsWith(string, suffix)

    比如:下面EL表达式将返回true

    ${fn:endsWith(“Hello World”, “World”)}

    5.7.4escapeXml函数

    该函数用于给String进行编码,它的转换方法与out标签将其escapeXml属性设为true时相似,详细语法例如以下:

    escapeXml(string)

    比如:El表达式

    ${fn:escapeXml(“User <br/> to change lines”)}
    显示为:
    Use <br/> to change lines

    5.7.5indexOf函数

    indexOf函数返回在某个字符串中第一次出现指定子字符串时的索引。

    假设没有找到指定的子字符串,它将返回-1,详细语法例如以下:

    indexOf(string,substring)

    比如,下面EL表达式将返回7

    ${fn:indexOf(“Stella Cadente”, “Cadente”)}

    5.7.6join函数

    Join函数将一个String数组中的全部元素都合并成一个字符串,中间用指定的分隔符隔开,其语法例如以下:

    Join(array, separator)

    假设数组为null,将返回一个空的字符串。

    比如,假设myArray是一个具有两个元素”my”和”world”的String数组,那么EL表达式:

    ${fn:join(myArray, “,”)}将返回”my,world”

    5.7.7length函数

    length函数将返回一个集合中的项目数,或者一个字符串中的字符数。其语法例如以下:

    length(input)

    举个样例,以下的EL表达式将返回14

    ${fn:length(“Stella Cadente”)}

    5.7.8replace函数

    Replace函数用afterString替换某一个字符串中全部的beforeString,并返回结果。其语法replace(string, beforeSubstring, afterSubstring)

    比如。EL表达式

    ${fn:replace(“Stella Cadente”, “e”, “E”)}
    将返回”StElla CadEntE”

    5.7.9split函数

    Split函数将一个字符串分解成一组子字符串,它的作用与join相反。比如,下面代码分界字符串”my,world”,并将结果保存在限域变量split中。

    然后,它利用forEach标签将split格式化成一个HTML表格。

    <c:set var=”split” value=’${fn:split(“my,world”,”,”)}’ />
    <table>
    <c:forEach var=”substring” items=”${split}”>
    <tr><td>${substring}</td></tr>
    </c:forEach>
    </table>
     
    其结果为:
    <table>
    <tr><td>my</td></tr>
    <tr><td>world</td></tr>
    </table>

    5.7.10startsWith函数

    startsWith函数測试某个字符串是否以指定的前缀开头,其语法例如以下:

    startsWith(string,prefix)

    比如,下面EL表达式将返回true

    ${fn:startsWith(“Stella Cadente”, “St”)}

    5.7.11substring函数

    Substring函数将返回一个从指定的起始索引(从0開始,含起始索引)至指定的结束索引之间的子字符串,其语法例如以下:

    Substring(String, beginIndex, endIndex)

    比如,下面EL表达式将返回”Stel”

    ${fn:substring(“Stella Cadente”, 0, 4)}

    5.7.12substringAfter函数

    substringAfter函数返回第一次出现指定子字符串之后的字符串部分。其语法例如以下:

    substringAfter(string, substring)

    比如。下面EL表达式

    ${fn:substringAfter(“Stella Cadente”, “e”)}
    将返回”lla Cadente”。

    5.7.13substringBefore函数

    substringBefore函数返回第一次出现子字符串之前的字符串部分,其语法例如以下:

    substringBefore(string, substring)

    比如,下面EL表达式将返回”St”

    ${fn:substringBefore(“Stella Cadente”, “e”)}

    5.7.14toLowerCase函数

    toLowerCase函数将字符串转换成所有小写字母。其语法例如以下:

    toLowerCase(string)

    比如,下面EL表达式将返回”stella cadente”:

    ${fn:toLowerCase(“Stella Cadente”)}

    5.7.15toUpperCase函数

    toUpperCase函数将字符串转换成所有大写字母。其语法例如以下:

    toUpperCase(string)

    比如,下面EL表达式将返回”STELLA CADENTE”

    ${fn:toUpperCase(“Stella Cadente”)}

    5.7.16trim函数

    trim函数去掉字符串前后的空格,其语法例如以下:

    trim(string)

    比如。下面EL表达式将返回”Stella Cadente”

    ${fn:trim(“              Stella Cadente       ”)}



  • 相关阅读:
    mysql慢查询日志
    VS中MFC连接MySQL的方法【转】
    localtime函数时区问题
    gethostbyname()函数【转】
    剪切板操作
    C/C++字符串查找函数 【转】
    vs2013出现IntelliSense错误,但是错误又不影响使用的消除办法
    c语言基础精讲加实例(个人觉得复习基础挺好的,)
    vs2013下qt工程调用自建的lib库函数教程
    取出16进制位对应位数的数字是0还是1(C语言)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5056743.html
Copyright © 2011-2022 走看看