JSTL--核心标签库

1:<c:out>标签

 

<c:out value="${Object }"  escapeXml="${boolean }"  default="${Object }" />

<c:out value="${Object }"  escapeXml="${boolean }">
    ${Object}
</c:out>

 注意:

a:

value的类型为Object,即value可以为Reader对象,使用该标签输出Reader对象时,如果要读取的文件的内容使用了非西欧字符集编码(如UTF-8、GBK等),应使用InputStreamReader类的构造方法指定读取文件内容时所采用的字符集编码(应和要读取的文件内容的字符集编码保持一致)。

Reader  r=new  InputStreamReader(new  FileInputStream(path) , " utf-8 ");

 

b:

如何将value置为null ?

1:使用JSP表达式    <c:out  value="<%=null %>" />
2:使用E  L表达式    <c:out  value="${null }" />

下面的方法不能见value置为null
<c:out value="null" />

 c:

default属性和标签体不能同时指定默认值,否则抛出异常。

 

 

2:<c:set>标签

a:“var”版

<c:set var="String"  value="${Object }"  scope="String" />

<c:set var="String"  scope="String">
    ${Objet}
</ c:set>

属性:
    var:待设置的web域中的属性的名字
    value:属性的值
    scope:待保存或删除的属性所属的web域,可选值为 page、request、session、application
注意:
    如果不指定value属性或标签体,该标签将删除scope指定的域中的var指定的属性

 

b:“target”版

<c:set  target="${Object}"  property="${String}"  value="${Object}" />

<c:set  target="${Object}"  property="${String}">
    ${Object}
</c:set>

属性:
    target:指定要设置的对象,JavaBean或Map
    property:待设置的target对象的属性名称
    value:同var版
注意:
    1:如果不指定value属性或标签体,该表签将删除target指定的Map对象中的property指定的
        key-value对,或将target指定的JavaBean对象的property属性置为null。
    2:如果属性值不能转换成property属性指定的对象类型,该标签将抛出异常。

 

注意:

1:该标签不能同时指定value属性和标签体,否则将抛出异常。

2:如果同时指定var和target,那么var属性的优先级更高。

3:var和target属性必须至少有一个,如果2个属性都没有或2属性都为null,那么标签将抛出JspTagException异常。

 

3:<c:remove>标签

<c:remove>标签用于删除web域(page、request、session、application)中的属性,不能用来删除JavaBean和Map对象中的属性、键值对。

<c:remove  var="String"  [scope="String"] />

属性:
    var:String  不支持动态属性值  待删除的属性的名称
    scope:String   不支持动态属性值   待删除的属性所在的web域

 

4:<c:catch>标签

该标签用于捕获任何Java代码或标签抛出的异常。

<c:catch  [value="varName"]>

</c:catch>

属性:
    var:String   不支持动态属性值
          表示捕获到的异常对象。
          如果指定该属性,该标签会以var属性指定的名称将异常对象保存在page域中。
          如果未指定该属性,则该标签只捕获异常,不保存异常。

补充:
      通过异常对象输出异常信息的方式:
           1:<c:out value="${e.message}"/>
               输出举例:Cannot convert xxx of type class java.lang.String to class 
                            java.util.Date
           2:<c:out value="${e.stackTrace}"/>
              输出举例:[Ljava.lang.StackTraceElement;@157ea4a
           3:<c:out value="${e}">
              输出举例:java.lang.IllegalArgumentException:Cannot convert xxx of type 
                           class java.lang.String to class java.util.Date

 

5:<c:if>标签

<c:if  test="${boolean}"  var="varName"  scoope="page">

<c:if  test="${boolean}"  var="varName"   scope="page">
    如果test指定属性的运算结果为真,则执行此处的代码。
</c:if>

注意:
    当指定scope属性时,必须指定var,否则该标签将抛出异常。

 

6:<c:choose>  <c:when>  <c:otherwise>标签

<c:choose>
    <c:when  test="${boolean}">
         代码
    </c:when>
    <c:when  test="${boolean}">
         代码
    </c:when>
    <c:otherwise>
         代码
    </c:otherwise>
<c:choose>

 注意:

1:<c:when>和<c:otherwise>标签必须是<c:choose>标签的子标签,不能单独使用。

2:<c:choose>标签中包含一个或多个<c:when>标签,包含0个或1个<c:otherwise>标签。

3:<c:when>标签必须放在<c:otherwise>标签的前面。

4:<c:when>和<c:otherwise>标签中可以包含任意的JSP代码。

5:<c:choose>标签中除了包含<c:when>和<c:otherwise>标签外,还可以包含空格、\r\n、制表符和JSP注释,除此之外不能在<c:choose>标签中(<c:when>和<c:otherwise>标签的外部)

    包含其他任何字符,否则<c:choose>标签将抛出异常。

 

7:<c:forEach>标签

 

语法1:根据集合对象进行迭代
    <c:forEach  [var="varName"]  items="${collection}"
                    [varStatus="varStatusName"]
                    [begin="${beginNum}"]
                    [end="${endNum}"]
                    [step="${steoNum}"]>
          需迭代执行的代码
     </c:forEach>

语法2:根据指定的次数进行迭代
    <c:forEach  [var="varName"]
                    [varStatus="varStatusName"]
                    begin="${beginNum}"  end="${endNum}"  [step="${stepNum}"]>
          需迭代执行的代码
    </c:forEach>

 

 

 

属性名是否支持动态属性值属性类型属性描述
varfalseString将当前迭代元素保存在page域中所用的属性名
itemstrue(见下面)用于迭代的集合对象
varStatusfalseString将当前迭代元素状态信息对象保存在page域中所用的属性名
begintrueint

如果指定items属性,就从集合中第begin个元素开始迭代。

如果未指定items属性,那么就从begin指定的数值开始迭代,直到end指定的值。

begin属性的索引值从0开始。

endtrueint

如果指定items属性,则迭代到第end个集合元素为止。

如果未指定items属性,则迭代到end指定的值。

steptrueint迭代的步长,即每迭代一步的迭代增量。

 

注意:

1:如果指定begin属性,该属性的值必须大于或等于0,否则会抛出java.servlet.jsp.JspTagException异常。

2:如果指定end属性,该属性的值不能小于begin属性的值,否则不会进行迭代操作。

3:如果指定step属性,该属性的值必须大于或等于0,否则会抛出java.servlet.jsp.JspTagException异常。

4:如果items属性的值为null,或items属性指定的集合对象不存在,items属性值将被作为一个空集合对待,不会进行任何迭代操作。

5:如果begin属性值大于或等于集合对象的元素个数,则不会进行迭代操作。

6:如果begin属性值在有效范围内,但end属性值大于或等于集合对象的元素个数,则迭代到集合对象的最后一个元素为止。

7:items属性支持如下的数据类型;

1:任意类型的数组

2:java.util.Collection

3:  java.util.Iterator

4:  java.util.Enumeration

5:  java.util.Map

6:  String

如果items属性值是String类型该字符串必须用逗号分隔。<c:forEach>标签会将以逗号分隔的字符串当做String数组来处理(每一个被逗号分隔的子串相当于String数组中的一个元素)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值