`
jhyimu2005
  • 浏览: 185740 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

jstl C标准标签库Ⅰ

阅读更多
jstl C标准标签库Ⅰ
前言

从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
作者:杨通杆(http://hexun.com/yangtonggan/default.html)

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


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


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


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


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


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

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


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


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


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

jstl C标签(Ⅱ)地址:http://www.blogjava.net/tangzurui/archive/2008/08/13/221657.html
分享到:
评论

相关推荐

    Java资源包01

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包1

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包11

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包2

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包3

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包6

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包5

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包10

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包4

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包8

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包7

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包9

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包101

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    JAVA上百实例源码以及开源项目源代码

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

Global site tag (gtag.js) - Google Analytics