【Jsp精品源码栏目提醒】:网学会员在Jsp精品源码频道为大家收集整理了“jstl C标准标签库 - 其它资料“提供大家参考,希望对大家有所帮助!
jstl C 标准标签库一前言从
JSP 1.1 规范开始,
JSP 就支持在
JSP 中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了 JSTL(JavaServer Pages StandardTag 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 ltc:tagname ...gt XML processing http://java.sun.com/jstl/xml x ltx:tagname ...gtI18N capable formatting http://java.sun.com/jstl/fmt fmt ltfmt:tagname ...gtDatabase access SQL http://java.sun.com/jstl/sql sql ltsql:tagname ...gtCore 支持
JSP 中的一些基本的操作;XML processing 支持 XML 文档的处理;I18N capable formatting 支持对
JSP 页面的国际化;Database access SQL支持
JSP 对数据库的操作。
让我先给你介绍 c 标签吧.1.ltc:outgt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:outgt标签是一个最常用的标签,用于在
JSP 中显示数据。
它的作用是用来替代通过
JSP 内 置对象 out 或者ltgt标签来输出对象的值。
语法: 没有 Body 时的语法 ltc:out value”value” escapeXml”truefalse” default”defaultValue”/gt 有 Body 时的语法 ltc:out value”value” escapeXml”truefalse”gt 这里是 Body 部分 lt/c:outgt属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值value 需要显 Object Y Y Y 无 用来定义需要求解的表达式。
示的值escapeXml 是否转 Y Y N true 用于指定在使用ltc:outgt标记输出 boolean 换特殊 诸如“lt”、“gt”、“’”、“”” 字符 和“amp”之类的字符(在 HTML 和 XML 中具有特殊意义) 时是否应 该进行转义。
如果将 escapeXml 设置为 true,则会自动的进行编码 处理。
default 缺省值 Object Y Y N 无 当求解后的表达式为 null 或者 String 为空时将打印这个缺省值。
Null 和错误说明假若 value 为 null会显示 default 的值;假若没有设定 default 的值,则会显示一个空的字符串。
实例:------------------------------------------------------------------------------------------------------------------------------------------Example1ltc:out valuequotsessionScope.anyValuequot defaultquotno valuequot escapeXmlquotfalsequot/gt该示例将从 Session 查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“no value”。
------------------------------------------------------------------------------------------------------------------------------------------Example2您的用户名是: ltc:out value”user.username” default”guest”/gt显示用户的用户名,如为空则显示 guestltc:out valuequotsessionScope.usernamequot/gt指定从 session 中获取 username 的值显示;ltc:out valuequotusernamequot /gt显示 username 的值,默认是从 requestpage中取,如果 request 中没有名为 username 的对象则从 session中取,session 中没有则从 applicationservletContext中取,如果没有取到任何值则不显示------------------------------------------------------------------------------------------------------------------------------------------2. ltc:setgt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:setgt标签用于为变量或 JavaBean 中的变量属性赋值的工作。
这个标签用于在某个范围page、request、session、application 等中使用某个名字设定特定的值,或者设定某个已经存在的 javabean 对象的属性。
他类似于ltrequest.setAttrbutequotnamequotquotvaluequotgt语法:语法 1: 没有 body将 value 的值存储至范围为 scope 的 varName 变量之中ltc:set valuequotvaluequot varquotvarNamequot scopequotpagerequestsessionapplicationquot/gt语法 2: 有 body将 body 内容存储至范围为 scope 的 varName 变量之中ltc:set valuequotvaluequot scopequotpagerequestsessionapplicationquotgt body.....lt/c:setgt语法 3: 将 value 的值存储至 target 对象属性中ltc:set valuequotvaluequot targetquottargetquot propertyquotpropertyNmaequot/gt语法 4: 将 body 内容的数据存储至 target 对象属性中ltc:set targetquottargetquot propertyquotpropertyNmaequotgt body....lt/c:setgt Null 和 错误处理:语法 3 和语法 4 会产生异常错误有以下两种情况: .target 为 null .target 不是 java.util.Map 或 JavaBean 对象假若 value 为 null 时:将由存储变量改为移除变量 .语法 1: 由 var 和 scope 所定义的变量,将被移除 .若 scope 已指定时,则 PageContext.removeAttributevarNamescope .若 scope 未指定时,则 PageContext.removeAttributevarName .语法 3: .假若 target 为 Map 时,则 Map.removeproperty .假若 target 为 JavaBean 时,propertye 指定的属性为 null 我们不能写成 scopequotourScopequot注意: var 和 scope 这两个属性不能使用表达式来表示,或 varquotaquot属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值 要被存 Y 否value Object true 无 被计算的表达式 储的值 变量名 N 否var String false 无 被导出的保存了 value 属性计算 结果的范围变量的名称 范围 N 否 pagescope String true var 的
JSP 范围 目标 Y 否target String true 无 要设置属性的对象。
必须是 对象 JavaBean 对象或 java.util.Map 对象 指定 Y 否property Object true 无 要设置的 target 对象的属性的名 target 称 对象属 性实例:------------------------------------------------------------------------------------------------------------------------------------------Example1ltc:set valuequotthis is andyquot varquotoneStringquot/gt该示例将为名为“oneString”的变量赋值为“this is andy”,其作用范围为 page。
------------------------------------------------------------------------------------------------------------------------------------------Example2ltc:set targetquotcust.addressquot propertyquotcityquot valuequotquot/gt将对象 cust.address 的 city 属性值保存到变量 city 中。
------------------------------------------------------------------------------------------------------------------------------------------Example3设置不同的属性,并且指定它们的范围:ltc:set valuequot10000quot varquotmaxUserquot scopequotapplicationquot/gtltc:set valuequot20quot varquotmaxIdelTimequot scopequotsessionquot/gtltc:set valuequotnext.jspquot varquotnextPagequot scopequotpagequot/gt------------------------------------------------------------------------------------------------------------------------------------------Example4ltc:set varquotbidquot valuequotparam.bookIdquot/gtltjsp:setProperty namequotbookDBquot propertyquotbookIdquot valuequotbidquot /gt------------------------------------------------------------------------------------------------------------------------------------------Example5lt Foo foo new Foo pageContext.setAttributequotfooquot foo gtltc:out valuequotfoo.datequot/gtltbrgt ltc:set targetquotfooquot propertyquotdayquot valuequot1quot/gtltc:out valuequotfoo.datequot/gt------------------------------------------------------------------------------------------------------------------------------------------3. ltc:removegt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:removegt标签用于删除存在于 scope 中的变量。
类似于ltsession.removeAttribute“name”gt 、ltrequest.removeAttribute“name”gt...语法:ltc:remove varquotvarNamequot scopequotpagerequestsessionapplicationquot/gt属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值 变量名 N 是 无var String N 欲移除变量的名称 范围 N 否 pagescope String N var 变量的
JSP 范围 若没有指 定,默认为全部查找------------------------------------------------------------------------------------------------------------------------------------------实例:Example1ltc:remove varquotsampleValuequot scopequotsessionquot/gtsessionScope.sampleValue------------------------------------------------------------------------------------------------------------------------------------------Example2ltc:remove varquotusernamequot scopequotsessionquot/gt将 username 变量从 session 范围移除。
若我们不设定 scope,则ltc:removegt会移除所有范围名称为 username的数据。
------------------------------------------------------------------------------------------------------------------------------------------4.ltc:catchgt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c 从而提供细粒度的错误控制,此描述:ltc:catchgt动作用于捕获
JSP 元素在其体中抛出的异常,异常也可以保存为一个页面作用域变量。
当错误发生ltc:catchgt和lt/c:catchgt之间时,只有ltc:catchgt和lt/c:catchgt之间的程序会被中止忽略,但整个网页不会被中止。
它包含一个 var属性,是一个描述异常的变量,该变量可选。
若没有 var 属性的定义,那么仅仅捕捉异常而不做任何事情,若定义了 var 属性,则可以利用 var 所定义的异常变量进行判断转发到其他页面或提示报错信息。
语法: ltc:catch varquotvarquotgt //可能发生错误的部分
JSP elements lt/c:catchgt属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值var 变量名 String N N N 无 用来存储错误信息的变量实例:------------------------------------------------------------------------------------------------------------------------------------------Example1ltc:catch varquotimportExceptionquotgtltfmt:parseDate valuequotparam.empDatequot dateStylequotshortquot /gtlt/c:catchgtltc:if testquotimportException nullquotgtltjsp:forward pagequotinput.jspquotgtltjsp:param namequotmsgquot valuequotInvalid date formatquot /gtlt/
jsp:forwardgtlt/c:ifgt------------------------------------------------------------------------------------------------------------------------------------------Example2ltc:catch varquoterrquotgt param.sampleSingleValue9 3lt/c:catchgterr当“param.sampleSingleValue9 3”表达式有异常时,可以从 var 属性“err”得到异常的内容,通常判断“err”是否为 null 来决定错误信息的提示。
------------------------------------------------------------------------------------------------------------------------------------------5.ltc:ifgt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:ifgt动作仅当所指定的表达式计算为 true 时才计算其体。
计算结果也可以保存为一个作用域 Boolean 变量。
语法:语法 1:没有体ltc:if testquotbooleanExpression quot varquotvar quot scopequotpage requestsessionapplicationquot/gt语法 2:有体ltc:if testquotbooleanExpressionquotgt
JSP elementslt/c:ifgt属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值test 测试表 boolean Y Y 是 无 如果表达式的结果为 true 则执 达式 行 bodyfalse 则相反var 变量名 String N N 否 无 用来存储 test 运算后的结果, 即 true 或 falsescope 变量作 String N N 否 page var 变量的
JSP 范围 用域实例:ltc:if testquotempty param.empDatequotgt ltjsp:forward pagequotinput.jspquotgt ltjsp:param namequotmsgquot valuequotMissing the Employment Datequot /gt lt/
jsp:forwardgt lt/c:ifgt6.ltc:choosegt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:choosegt动作用于控制嵌套ltc:whengt和ltc:otherwisegt动作的处理,它只允许第一个测试表达式计算为 true 的ltc:whengt动作得到处理;如果所有ltc:whengt动作的测试表达式都计算为 false,则会处理一个ltc:otherwisegt动作。
ltc:choosegt标签没有属性,可以被认为是父标签,ltc:whengt、ltc:otherwisegt将作为其子标签来使用。
语法: ltc:choosegt bodyltwhengt和ltotherwisegt lt/c:choosegt限制:ltc:choosegt的本地内容只能有: .空白 .1 或多个ltc:whengt .0 或多个ltc:otherwisegt属性: 无实例:----------------------------------------------------------------------------------------------------------------------------------------Example1ltc:choosegtltc:when testquotproduct.onSalequotgtproduct.salesPrice On salelt/c:whengtltc:otherwisegtproduct.pricelt/c:otherwisegtlt/c:choosegt---------------------------------------------------------------------------------------------------------------------------------------Example2ltc:choosegt ltc:when testquotcondition1quotgt condition1 为 true lt/c:whengt ltc:when testquotcondition2quotgt condition2 为 true lt/c:whengt ltc:otherwisegt condition1 和 conditon2 都为 false lt/ltc:otherwise gt说明:在同一个ltc:choosegt中,假如所有的ltc:whengt的 test 都不为 true 时,则执行ltc:otherwisegt的本体内容。
在同一个ltc:choosegt中,假若有好几个ltc:whengt都会 true 时,只能有一个ltc:whengt成立。
lt/c:choosegt----------------------------------------------------------------------------------------------------------------------------------------7.ltc:whengt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:whengt标签等价于“if”语句,它包含一个 test 属性,该属性表示需要判断的条件。
语法: ltc:when testquottestConditionquotgt Body content lt/c:whengt属性:属性名 描述 类型 是否 是否 是否 默认值 说明 接受 支持 动态 EL 必须 值test 测试表 boolean Y Y 是 无 如果表达式的结果为 true 则执行 达式 bodyfalse 则相反实例:8.ltc:otherwisegt库:Core核心库URI:http://java.sun.com/
jsp/jstl/core前缀:c描述:ltc:otherwisegt标签没有属性,它等价于“else”语句。
语法: ltc:otherwisegt conditional block lt/c:otherwisegt属性: 无实例:ltc:choosegt、ltc:whengt、ltc:otherwisegt标签综合实例ltc:choosegt ltc:when testquotparamValues.sampleValue2 11quotgt n.