jstl c 标签(1)
从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
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对数据库的操作。
1. <c:out>
库 :Core(核心库)
URI : http://java.sun.com/jsp/jstl/core
前缀 : c
描述 :<c:out> 标签是一个最常用的标签,用于在 JSP 中显示数据。 它的作用是用来替代通过 JSP 内 置对象 out 或者 <%=%> 标签来输出对象的值。
语法 :
没有Body时的语法
<c:outvalue=”value”[escapeXml=”{true|false}”][default=”defaultValue”]/>
有Body时的语法
<c:outvalue=”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:outvalue="${sessionScope.anyValue}"default="novalue"escapeXml="false"/>
该示例将从Session查找名为“anyValue”的参数,并显示在页面,若没有找到则显示“novalue”。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
您的用户名是:<c:outvalue=”${user.username}”default=”guest”/>
显示用户的用户名,如为空则显示guest
<c:outvalue="${sessionScope.username}"/>
指定从session中获取username的值显示;
<c:outvalue="${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:setvalue="value"var="varName"[scope="{page|request|session|application}"]/>
语法2:有body
将body内容存储至范围为scope的varName变量之中
<c:setvalue="value"[scope="{page|request|session|application}"]>
body.....
</c:set>
语法3:将value的值存储至target对象属性中
<c:setvalue="value"target="target"property="propertyNmae"/>
语法4:将body内容的数据存储至target对象属性中
<c:settarget="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:setvalue="thisisandy"var="oneString"/>
该示例将为名为“oneString”的变量赋值为“thisisandy”,其作用范围为page。
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:settarget="${cust.address}"property="city"value="$"/>
将对象cust.address的city属性值保存到变量city中。
------------------------------------------------------------------------------------------------------------------------------------------
Example3
设置不同的属性,并且指定它们的范围:
<c:setvalue="10000"var="maxUser"scope="application"/>
<c:setvalue="20"var="maxIdelTime"scope="session"/>
<c:setvalue="next.jsp"var="nextPage"scope="page"/>
------------------------------------------------------------------------------------------------------------------------------------------
Example4
<c:setvar="bid"value="${param.bookId}"/>
<jsp:setPropertyname="bookDB"property="bookId"value="${bid}"/>
------------------------------------------------------------------------------------------------------------------------------------------
Example5
<%Foofoo=newFoo();pageContext.setAttribute("foo",foo);%>
<c:outvalue="${foo.date}"/><br><c:settarget="${foo}"property="day"value="1"/>
<c:outvalue="${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:removevar="varName"[scope="{page|request|session|application}"]/>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
var |
变量名 |
String |
N |
N |
是 |
无 |
欲移除变量的名称 |
scope |
范围 |
String |
N |
N |
否 |
page |
var变量的JSP范围;若没有指定,默认为全部查找 |
------------------------------------------------------------------------------------------------------------------------------------------
实例 :
Example1
<c:removevar="sampleValue"scope="session"/>
${sessionScope.sampleValue}
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:removevar="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"]>
//可能发生错误的部分
JSPelements
</c:catch>
属性 :
属性名 |
描述 |
类型 |
是否接受动态值 |
是否支持 EL |
是否 必须 |
默认值 |
说明 |
var |
变量名 |
String |
N |
N |
N |
无 |
用来存储错误信息的变量 |
实例 :
------------------------------------------------------------------------------------------------------------------------------------------
Example1
<c:catchvar="importException">
<fmt:parseDatevalue="${param.empDate}"dateStyle="short"/>
</c:catch>
<c:iftest="${importException!=null}">
<jsp:forwardpage="input.jsp">
<jsp:paramname="msg"value="Invaliddateformat"/>
</jsp:forward>
</c:if>
------------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:catchvar="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:iftest=" booleanExpression "
var=" var "[scope=" page |request|session|application"]/>
语法2:有体
<c:iftest=" booleanExpression ">
JSPelements
</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:iftest="${emptyparam.empDate}">
<jsp:forwardpage="input.jsp">
<jsp:paramname="msg"value="MissingtheEmploymentDate"/>
</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:whentest="${product.onSale}">
${product.salesPrice}Onsale!
</c:when>
<c:otherwise>
${product.price}
</c:otherwise>
</c:choose>
---------------------------------------------------------------------------------------------------------------------------------------
Example2
<c:choose>
<c:whentest="${condition1}">
condition1为true
</c:when>
<c:whentest="${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:whentest="testCondition">
Bodycontent
</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>
conditionalblock
</c:otherwise>
属性 :
无
实例 :
<c:choose>、<c:when>、<c:otherwise>标签 综合实例
<c:choose>
<c:whentest="${paramValues.sampleValue[2]==11}">
not12not13,itis11
</c:when>
<c:whentest="${paramValues.sampleValue[2]==12}">
not11not13,itis12
</c:when>
<c:whentest="${paramValues.sampleValue[2]==13}">
not11not12,itis13
</c:when>
<c:otherwise>
not11、12、13
</c:otherwise>
</c:choose>
相关推荐
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 jstl标准标签库的三个jar包:jstl-1.2、jstl-api-1.2、jstl-impl-1.2。 ...
C标签是JSTL的一部分,全称为Core标签库,提供了大量实用的功能,如迭代数组、集合,执行条件语句,以及处理页面导航等。 在Java Web应用中,JSTL C标签可以帮助开发者避免在JSP页面中编写过多的Java脚本,使代码更...
1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL操作标签:import、url、redirect 使用标签时,一定要在jsp文件头加入以下代码...
**JSTL与C标签库** JavaServer Pages Standard Tag Library(JSTL)是一个标准的标签库,用于增强JavaServer Pages(JSP)的可读性和可维护性。它提供了许多预定义的标签,用于执行常见的JSP任务,如迭代、条件判断...
JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages 标准标签库)是Java Web开发中常用的一个库,它提供了一系列预定义的标签,用于简化JSP页面中的逻辑代码,使得页面更加清晰易读。在给定的压缩包...
JSTL(JavaServer Pages Standard Tag Library)即JavaServer页面的标准标签库,它是一套用于JSP页面的自定义标签库,通过这些标签可以简化JSP页面的开发。本文将对JSTL中常用的标签进行总结。 首先,<c:out>标签...
1. **自定义标签库**: 自定义标签库允许开发者创建自己的标签,这些标签可以封装复杂的业务逻辑,使得JSP页面更加结构化。JSTL是这样一个预定义的、标准的自定义标签库,它包含多个子库,每个子库都专注于不同的...
自己总结的JSTL 核心标签 附上一定的源码 希望对大家有用
1. **核心标签库 (Core Tags):** 这个库定义了`cc.tld`,包含了用于常见任务的标签,如数据管理、流程控制和输出。主要标签如下: - `<c:out>`:用于输出变量或表达式的值,支持EL(Expressions Language)。`value`...
JavaServer Pages Standard Tag Library(JSTL)是用于简化JSP开发的标准标签库,它将常见的JSP操作封装成易于使用的标签,使得代码更加简洁、可读性更强。JSTL的核心标签库提供了处理流程控制、迭代、条件判断等...
JSTL还包括其他标签,如`<c:forEach>`用于迭代集合,`<c:forEach>`和`<fmt:formatDate>`用于日期和时间格式化,以及`<c:remove>`用于删除变量等。学习和掌握JSTL能显著提高JSP开发的效率和代码的可读性。
1. **JSTL核心标签** JSTL的核心标签库(core taglib)提供了用于控制流程、处理URL、发送重定向等的功能。例如,`<c:if>`用于条件判断,`<c:forEach>`用于迭代,`<c:set>`用于设置变量,而`<c:redirect>`用于页面...
1. **Core(核心标签库)**:提供基本的控制结构,如条件语句、循环、跳转等。 - `<c:if>`:用于执行条件判断。 - `<c:choose>`, `<c:when>`, `<c:otherwise>`:用于创建多分支结构。 - `<c:forLoop>`:用于执行...
### JSTL(JSP标准标签库):增强JSP页面功能的关键技术 JSTL,全称为JSP Standard Tag Library(JSP标准标签库),是JavaServer Pages(JSP)技术的重要补充,旨在简化JSP页面的开发,提供了一系列预定义的、可...
这样,你就可以使用如`<c:forEach>`、`<fmt:formatDate>`等JSTL标签了。 **JSTL常见标签及其用法**: - `c:set`:设置变量,如`<c:set var="name" value="张三"/>`。 - `c:out`:安全地输出变量,防止XSS攻击,如`...
以上只是JSTL核心标签库的一部分功能,实际应用中还有更多标签,如循环标签`<c:forEach>`、迭代标签`<c:forTokens>`等。这些标签在处理数据、控制流程等方面提供了极大的便利,使得JSP页面更加简洁、易读,也更符合...
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的JSP标签库,它提供了许多用于处理常见任务的标签,比如迭代、条件判断、字符串操作等。**`fn`** 标签库是JSTL的一部分,专门用于提供各种字符串处理...
【JSTL标签配置流程详解】 JSTL(JavaServer Pages Standard Tag Library)是SUN公司推出的一种用于JSP开发的组件,旨在替代传统的JSP scriptlet代码,提高页面的可读性和维护性。JSTL提供了一系列标签,使得开发者...