zoukankan      html  css  js  c++  java
  • jstl c 标签(1)

     
    前言

    从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
     
    JSTL简介

    JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。
    JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签:
    标签 URI 前缀 示例
    Core http://java.sun.com/jstl/core c <c:tagname ...>
    XML processing http://java.sun.com/jstl/xml x <x:tagname ...>
    I18N capable formatting http://java.sun.com/jstl/fmt fmt <fmt:tagname ...>
    Database access (SQL) http://java.sun.com/jstl/sql sql <sql:tagname ...>


    Core支持JSP中的一些基本的操作;
    XML processing支持XML文档的处理;
    I18N capable formatting支持对JSP页面的国际化;
    Database access (SQL)支持JSP对数据库的操作。
    让我先给你介绍c标签吧.
     

    1. <c:out>

    :Core(核心库)

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

    前缀 :

    描述 :<c:out> 标签是一个最常用的标签,用于在   JSP   中显示数据。 它的作用是用来替代通过 JSP   置对象 out 或者 <%=%> 标签来输出对象的值。

    语法

    没有Body时的语法 

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

    有Body时的语法 

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

    这里是Body部分 

    </c:out>  

    属性 :

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    value 

    需要显示的值

    Object 

    Y

    Y

    Y

    用来定义需要求解的表达式。

    escapeXml

    是否转换特殊字符

    boolean

    Y

    Y

    N

    true

    用于指定在使用 <c:out> 标记输出诸如“ < ”、“ > ”、“ ”、“ ”和“ & ”之类的字符(在  HTML   XML  中具有特殊意义)时是否应该进行转义。如果将  escapeXml  设置为 true ,则会自动的进行编码处理。

    default

    缺省值

    Object

    Y

    Y

    N

    当求解后的表达式为 null 或者 String 为空时将打印这个缺省值。

    Null和错误说明

    假若value为null,会显示default的值;假若没有设定default的值,则会显示一个空的字符串。

    实例 :

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>

    该示例将从Session查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“no value”。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    您的用户名是: <c:out value=”${user.username}” default=”guest”/> 

    显示用户的用户名,如为空则显示guest

    <c:out value="${sessionScope.username}"/> 

    指定从session中获取username的值显示;

    <c:out value="${username}" /> 

    显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示

    ------------------------------------------------------------------------------------------------------------------------------------------

    2.  <c:set>

    :Core(核心库)

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

    前缀 :

    描述 : <c:set>标签用于为变量或JavaBean中的变量属性赋值的工作。这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。他类似于<%request.setAttrbute("name","value");%>  

    语法

    语法1: 没有body

    将value的值存储至范围为scope的varName变量之中

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

    语法2: 有body

    将body内容存储至范围为scope的varName变量之中

    <c:set value="value" [scope="{page|request|session|application}"]>

     body.....

    </c:set>

    语法3: 将value的值存储至target对象属性中

    <c:set value="value" target="target" property="propertyNmae"/>

    语法4: 将body内容的数据存储至target对象属性中

    <c:set target="target" property="propertyNmae">

     body....

    </c:set>

    Ø  Null 和 错误处理:

    语法3和语法4会产生异常错误,有以下两种情况:

     .target 为null

     .target 不是java.util.Map或JavaBean对象

    假若value为null时:将由存储变量改为移除变量

     .语法1: 由var和scope所定义的变量,将被移除

       .若scope已指定时,则PageContext.removeAttribute(varName,scope);

       .若scope未指定时,则PageContext.removeAttribute(varName);

     .语法3: 

       .假若target为Map时,则Map.remove(property);

       .假若target为JavaBean时,propertye指定的属性为null

    注意: var和scope这两个属性不能使用表达式来表示,我们不能写成 scope="${ourScope}"或var="${a}"

    属性 :

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    value

    要被存储的值 

    Object

    true

    Y

    被计算的表达式

    var

    变量名

    String

    false

    N

    被导出的保存了value属性计算结果的范围变量的名称

    scope

    范围

    String

    true

    N

    page

    var的JSP范围

    target

    目标 对象

    String

    true

    Y

    要设置属性的对象。必须是JavaBean对象或java.util.Map对象

    property

    指定target对象属性

    Object 

    true

    Y

    要设置的target对象的属性的名称

    实例 :

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:set value="this is andy" var="oneString"/>

    该示例将为名为“oneString”的变量赋值为“this is andy”,其作用范围为page。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:set target="${cust.address}" property="city" value="$"/> 

    将对象cust.address的city属性值保存到变量city中。

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example3

    设置不同的属性,并且指定它们的范围:

    <c:set value="10000" var="maxUser" scope="application"/>

    <c:set value="20" var="maxIdelTime" scope="session"/>

    <c:set value="next.jsp" var="nextPage" scope="page"/>

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example4

    <c:set var="bid" value="${param.bookId}"/> 

    <jsp:setProperty name="bookDB" property="bookId"   value="${bid}" />

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example5

    <% Foo foo = new Foo(); pageContext.setAttribute("foo", foo); %>

    <c:out value="${foo.date}"/><br> <c:set target="${foo}" property="day" value="1"/> 

    <c:out value="${foo.date}"/> 

    ------------------------------------------------------------------------------------------------------------------------------------------

    3.   <c:remove>

    :Core(核心库)

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

    前缀 :

    描述 : <c:remove>标签用于删除存在于scope中的变量。 类似于 <%session.removeAttribute(“name”)%> 

    <%request.removeAttribute(“name”)%>...

    语法

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

    属性 :

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    var

    变量名

    String

    N

    N

    欲移除变量的名称

    scope

    范围

    String

    N

    N

    page

    var变量的JSP范围; 若没有指定,默认为全部查找

    ------------------------------------------------------------------------------------------------------------------------------------------

    实例 :

    Example1

    <c:remove var="sampleValue" scope="session"/>

    ${sessionScope.sampleValue}

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:remove var="username" scope="session"/>

    将username变量从session范围移除。若我们不设定scope,则<c:remove>会移除所有范围名称为username

    的数据。

    ------------------------------------------------------------------------------------------------------------------------------------------

    4. <c:catch>

    :Core(核心库)

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

    前缀 :

    描述 : <c:catch>动作用于捕获JSP元素在其体中抛出的异常,从而提供细粒度的错误控制,   此异常也可以保存为一个页面作用域变量。当错误发生<c:catch>和</c:catch>之间时,只有<c:catch>和</c:catch>之间的程序会被中止忽略,但整个网页不会被中止。 它包含一个var属性,是一个描述异常的变量,该变量可选。若没有var属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了var属性,则可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。

    语法

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

    //可能发生错误的部分

    JSP elements 

    </c:catch> 

    属性 :     

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    var 

    变量名

    String 

    N

    N

    N

    用来存储错误信息的变量

    实例 :

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:catch var="importException"> 

    <fmt:parseDate value="${param.empDate}" dateStyle="short" /> 

    </c:catch> 

    <c:if test="${importException != null}"> 

    <jsp:forward page="input.jsp"> 

    <jsp:param name="msg" value="Invalid date format" /> 

    </jsp:forward> 

    </c:if> 

    ------------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:catch var="err">

             ${param.sampleSingleValue[9] == 3}

    </c:catch> 

    ${err}

    当“${param.sampleSingleValue[9] == 3}”表达式有异常时,可以从var属性“err”得到异常的内容,通常判断“err”是否为null来决定错误信息的提示。

    ------------------------------------------------------------------------------------------------------------------------------------------

    5. <c:if>

    :Core(核心库)

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

    前缀 :

    描述 : <c:if>动作仅当所指定的表达式计算为true时才计算其体。计算结果也可以保存为一个作用域Boolean变量。 

    语法 :

    语法1:没有体 

    <c:if test=" booleanExpression 

     var=" var  " [scope=" page   |request|session|application"]/> 

    语法2:有体 

    <c:if test=" booleanExpression ">

      JSP elements

    </c:if>

    属性 :

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    test 

    测试表达式 

    boolean 

    Y

    如果表达式的结果为true则执行body,false则相反

    var 

    变量名

    String 

    N

    N

    用来存储test运算后的结果,即true或false                          

    scope 

    变量作用域

    String 

    N

    N

    page

    var变量的JSP范围

    实例 :

    <c:if test="${empty param.empDate}"> 

    <jsp:forward page="input.jsp"> 

    <jsp:param name="msg" value="Missing the Employment Date" /> 

    </jsp:forward>

     </c:if>

    6. <c:choose>

    :Core(核心库)

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

    前缀 :

    描述 : <c:choose>动作用于控制嵌套<c:when>和<c:otherwise>动作的处理,它只允许第一个测试表达式计算为true的<c:when>动作得到处理;如果所有<c:when>动作的测试表达式都计算为false,则会处理一个<c:otherwise>动作。<c:choose>标签没有属性,可以被认为是父标签,<c:when>、<c:otherwise>将作为其子标签来使用。

    语法 :

    <c:choose>

    body(<when>和<otherwise>)

    </c:choose>

    限制:

    <c:choose>的本地内容只能有:

     .空白

     .1或多个<c:when>

     .0或多个<c:otherwise>

    属性 :

    实例 :

    ----------------------------------------------------------------------------------------------------------------------------------------

    Example1

    <c:choose> 

    <c:when test="${product.onSale}"> 

    ${product.salesPrice} On sale! 

    </c:when> 

    <c:otherwise> 

    ${product.price} 

    </c:otherwise> 

    </c:choose> 

    ---------------------------------------------------------------------------------------------------------------------------------------

    Example2

    <c:choose>

     <c:when test="${condition1}">

      condition1 为 true

     </c:when>

     <c:when test="${condition2}">

      condition2 为 true

     </c:when>

     <c:otherwise>

      condition1和conditon2都为false

     </<c:otherwise >

    说明:

    在同一个<c:choose>中,假如所有的<c:when>的test都不为true时,则执行<c:otherwise>的本体内容。

    在同一个<c:choose>中,假若有好几个<c:when>都会true时,只能有一个<c:when>成立。

    </c:choose>

    ----------------------------------------------------------------------------------------------------------------------------------------

    7. <c:when>

    :Core(核心库)

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

    前缀 :

    描述 :<c:when>标签等价于“if”语句,它包含一个test属性,该属性表示需要判断的条件。

    语法 :

    <c:when test="testCondition">

    Body content

    </c:when>

    属性 :

    属性名

    描述

    类型

    是否接受动态值

    是否支持 EL

    是否

    必须

    默认值

    说明

    test

    测试表达式

    boolean

    Y

    Y

    如果表达式的结果为true则执行body,false则相反  

    实例 :

    8. <c:otherwise>

    :Core(核心库)

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

    前缀 :

    描述 :<c:otherwise>标签没有属性,它等价于“else”语句。

    语法 :

    <c:otherwise>

    conditional block

    </c:otherwise>

    属性 :

    实例 :

    <c:choose>、<c:when>、<c:otherwise>标签 综合实例

    <c:choose>

             <c:when test="${paramValues.sampleValue[2] == 11}">

                       not 12 not 13,it is 11

             </c:when>

             <c:when test="${paramValues.sampleValue[2] == 12}">

                       not 11 not 13,it is 12

             </c:when>

             <c:when test="${paramValues.sampleValue[2] == 13}">

                       not 11 not 12,it is 13

             </c:when>

             <c:otherwise>

                       not 11 、12、13

             </c:otherwise>

    </c:choose>

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    多线程、方便扩展的Windows服务程序框架
    C#并行开发_Thread/ThreadPool, Task/TaskFactory, Parallel
    C#并行编程-Task
    C#线程篇---Task(任务)和线程池不得不说的秘密(5)
    C# 线程知识--使用Task执行异步操作
    C# 线程池执行操作例子
    c#子线程执行完怎么通知主线程
    C#子线程执行完后通知主线程
    再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化
    熵的函数为什么用H,而熵的英文是entropy,好像没关系。实际原因是
  • 原文地址:https://www.cnblogs.com/cuker919/p/4878679.html
Copyright © 2011-2022 走看看