JSTL标签之核心标签库

来源:互联网 发布:淘宝购物车需求分析 编辑:程序博客网 时间:2024/05/18 01:56

核心标签:

核心组的标签是最常用的JSTL标签。以下是在您的JSP的语法包括JSTL核心库:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSTL 核心标签库(C标签)标签有以下标签,功能上分为4类:
1.表达式控制标签:<c:out> 、 <c:set> 、 <c:remove> 、 <c:catch>
2.流程控制标签:<c:if> 、 <c:choose> 、 <c:when> 、 <c:otherwise>
3.循环标签:<c:forEach> 、 <c:forTokens>
4.URL操作标签:<c:import> 、 <c:url> 、 <c:redirect> 、 <c:param>

<c:out>标签

<c:out>主要用来显示数据的内容,类似的方式<%=%>效果,例如:Hello ! <c:out value="${username}" />,<c:out>可自动转义XML标签,以便他们都不会计算为实际的标签。

语法

语法1:没有本体(body)内容

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

语法2:有本体内容

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

属性:

标签<c:out>具有以下属性:

属性描述必需默认值value输出的信息YesNonedefault反馈输出的信息NobodyescapeXmlTrue,如果标签转义特殊XML字符Notrue

说明

一般来说,<c:out>默认会将 <>、’、” 和 转换为 &lt;&gt;&#039;&#034; 和 &amp;

假若不想转换时,只需要设定<c:out>escapeXml 属性为fasle 就可以了。

范例

<c:out value="Hello JSP 2.0 !! " />

<c:out value="${ 3 + 5 }" />

<c:out value="${ param.data }" default="No Data" />

<c:out value="<p>有特殊字符</p>" />

<c:out value="<p>有特殊字符</p>" escapeXml="false" />

1.在网页上显示 Hello JSP 2.0 !! 

2.在网页上显示 8

3.在网页上显示由窗体传送过来的data 参数之值,假若没有data 参数,或data 参数的值为null 时,则网页上会显示No Data

4.在网页上显示“<p>有特殊字符</p>”;

5.在网页上显示“有特殊字符”。

例子:

JSP页面代码:

结果:

<c:set>标签

<c:set>标签是JSTL的setProperty动作的友好版本。标签是有用的,因为它的表达式求值,并使用结果的JavaBean或java.util.Map对象设置一个值。

语法

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

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

语法2:将本体内容的数据储存至范围为scope 的 varName 变量之中

<c:set var="varName" [scope="{ page|request|session|application }"]>… 本体内容</c:set>

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

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

语法4

将本体内容的数据储存至 target 对象的属性中

<c:set target="target" property="propertyName">… 本体内容</c:set>

属性:

<c:set>标签具有以下属性:

属性描述必需默认值value保存信息Nobodytarget变量的名称,其属性应该修改NoNoneproperty要修改的属性NoNonevar变量的名称存储信息NoNonescope变量来存储信息的范围NoPage

如果指定目标,属性也必须指定。

例子:

JSP页面代码:

结果:


<c:remove>标签

<c:remove>标签删除变量,无论是从指定的范围内或范围内的变量(如果没有指定范围)。这个动作通常是不特别有帮助,但它可以帮助确保一个JSP范围内的资源,它负责清理。

语法

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

属性:

<c:remove>标签具有以下属性:

属性描述必选默认var删除的变量名称YesNonescope要删除变量的范围NoAll scopes

说明

<c:remove>必须要有var 属性,即要被移除的属性名称,scope 则可有可无,例如:

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

number 变量从Session 范围中移除。若我们不设定scope,则<c:remove>将会从Page

RequestSession Application 中顺序寻找是否存在名称为number 的数据,若能找到时,则将它移除掉,反之则不会做任何的事情。

注意:当不指定scope时,回remove掉从page到application的var指定的变量

例子:

JSP页面代码:

结果:

<c:catch>标签

<c:catch>主要用来处理产生错误的异常状况,并且将错误信息储存起来。

语法

<c:catch [var="varName"] >… 欲抓取错误的部分</c:catch>

属性:

<c:catch>标签具有以下属性:

属性描述必选默认var变量的名称保存在java.lang。如果抛出的Throwable在body元素内。NoNone

说明:

<c:catch>主要将可能发生错误的部分放在<c:catch></c:catch>之间。如果真的发生错

误,可以将错误信息储存至varName 变量中,例如:

<c:catch var="message">

: //可能发生错误的部分

</c:catch>

另外,当错误发生在<c:catch></c:catch>之间时,则只有<c:catch></c:catch>之间的程序

会被中止忽略,但整个网页不会被中止。 


例子:

JSP页面代码:

结果:


<c:if>标签

<c:if>标签计算表达式,只有当表达式的值为真,则显示其主体内容。

语法

语法1:没有本体内容(body)

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

语法2:有本体内容

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>具体内容</c:if>

属性:

<c:if>标签具有以下属性:

属性描述必需默认test条件计算是的无var变量名称的存储条件的结果无无scope变量的范围的存储条件的结果无页面

例子:

JSP页面代码:

结果:


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

<c:choose>标签

<c:choose>就像Java switch语句,它可以让你选择一些替代方案品。正如switch语句case语句,

<c:choose>标签有<c:when>的标签。一个switch语句中有default子句来指定一个默认的行动同样的方式<c:choose>有<c:otherwise>作为默认子句。

语法

<c:choose>本体内容( <when> 和 <otherwise> )</c:choose>

限制

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

·空白

·或多个 <c:when>

·或多个 <c:otherwise>

说明

若使用<c:when><c:otherwise>来做流程控制时,两者都必须为<c:choose>的子标签.

<c:when>

<c:when>的用途就和我们一般在程序中用的when 一样。

语法

<c:when test="testCondition" >本体内容</c:when>

限制

☆ <c:when>必须在<c:choose></c:choose>之间

☆ 在同一个<c:choose>中时,<c:when>必须在<c:otherwise>之前

说明

<c:when>必须有test 属性,当test中的表达式结果为true时,则会执行本体内容;如果为

false时,则不会执行。

<c:otherwise>

在同一个 <c:choose> 中,当所有 <c:when> 的条件都没有成立时,则执行<c:otherwise> 

本体内容。

语法

<c:otherwise>本体内容</c:otherwise>

属性:

  • <c:choose>标签没有任何属性。

  • <c:when>标记有一个属性,下面列出了。

  • <c:otherwise>标签没有任何属性。

<c:when>标记具有以下属性:

属性描述必需默认值test条件计算YesNone

例子:

JSP页面代码:

结果:


<c:forEach>标签

<c:forEach>标签是常用的标签,因为它遍历对象的集合。<c:forTokens>标签是用来打破的字符串令牌和遍历每个标记。

语法

语法1:迭代一集合对象之所有成员

<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"][end="end"] [step="step"]>本体内容< /c:forEach>

语法2:迭代指定的次数

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end"[step="step"]>本体内容</c:forEach>

限制

·假若有begin 属性时,begin 必须大于等于 0

·假若有end 属性时,必须大于begin

·假若有step 属性时,step 必须大于等于0

Null 和错误处理

·假若items null 时,则表示为一空的集合对象

·假若begin 大于或等于items 时,则迭代不运算

属性:

<c:forEach>标签有以下属性:

属性描述必需默认items信息循环遍历无无begin元素开始(0 =第一个项目,1 =第二个项目,...)无0end元素来结束(0 =第一个项目,1 =第二个项目,...)无最后一个元素step过程中每个步骤的项目无1var变量名称,揭露目前的项目无无varStatus变量名称,露出回路状态无无

<c:forEach>例子:

数组例子:


结果:


<c:forEach>除了支持数组之外,还有标准J2SE 的集合类型,例如:ArrayList、List、
LinkedList、Vector、Stack和Set 等等;另外还包括java.util.Map 类的对象.

<c:forEach>并不只是用来浏览集合对象而已,读者可以从语法2中发现,items并不存在

,但是当没有使用items 属性时,就一定要使用begin end 这两个属性。


上述范例中,我们并没有执行浏览集合对象,只是设定begin 和end 属性的值,这样它就
变成一个普通的循环。此范例是将循环设定为:从1 开始跑到10,总共会重复循环10 次,并
且将数字放到item 的属性当中. 

begin主要用来设定在集合对象中开始的位置(注意:第一个位置为0);end 用来设定结束的位置;而step 则是用来设定现在指到的成员和下一个将被指到成员之间的间隔.

另外,<c:forEach>还提供varStatus 属性,主要用来存放现在指到之成员的相关信息。例如: varStatus="s",那么将会把信息存放在名称为s的属性当中。varStatus属性还有另外四个属性:indexcountfirst last,它们各自代表的意义如表:

属性

类型

意义

index

number

现在指到成员的索引

count

number

总共已经指到成员的总数

first

boolean

现在指到的成员是否为第一个成员

last

boolean

现在指到的成员是否为最后一个成员


我们可以使用varStatus 属性取得循环正在浏览之成员的信息,下面为一个简单的范例:


<c:forTokens> 

<c:forTokens> 用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。
语法:

<c:forTokens   items="stringOfTokens"        delims="delimiters"        [var="varName"]        [varStatus="varStatusName"]        [begin="begin"]        [end="end"]        [step="step"]>本体内容</c:forTokens>  

属性

<c:forTokens>标签有类似<c:forEach>的属性,除了一个额外的属性delims指定要使用的字符作为分隔符。

属性描述需要默认delims字符作为分隔符使用是的无

说明

<c:forTokens>的begin、end、step、var 和varStatus 用法都和<c:forEach>一样,因此,笔者在这里就只介绍items 和delims 两个属性:items 的内容必须为字符串;而delims 是用来分割items 中定义的字符串之字符。
下面为一个典型的<c:forTokens>的范例:

上面范例执行后,将会在网页中输出ABCDE。它会把符号“,”当做分割的标记,拆成5 个部分,也就是执行循环5 次,但是并没有将A,B,C,D,E 中的“,”显示出来。



<c:import>标签

<c:import>标签提供<include>的所有的功能动作,但也可以包含绝对URL。

例如,允许使用导入标签包含的内容从一个不同的Web站点或FTP服务器。

属性:

<c:import>标签具有以下属性:

属性描述必需默认值urlURL检索和导入到页面YesNonecontext/后面的本地Web应用程序的名称No目前的应用charEncoding为导入数据使用的字符集NoISO-8859-1var变量的名称存储导入的文本NoPrint to pagescope变量作用域用于存储导入的文本NoPagevarReader替代变量的名称,暴露的java.io.ReaderNoNone

例子:



<c:url>标签

<c:url>标签格式化成一个字符串格式的URL,并将其存储到变量中。这个标签会在必要时自动执行URL重写。 var属性指定的变量将包含格式化的URL。

JSTL url标签只是response.encodeURL()方法的调用一个替代方法。URL标记提供的唯一的真正的优势是正确的URL编码,包括子param标签指定的任何参数。

属性:

<c:url>标签具有以下属性:

AttributeDescriptionRequiredDefaultvalue根URLYesNonecontext/后面的本地Web应用程序的名称NoCurrent applicationvar变量的名称,暴露处理的URLNoPrint to pagescope变量的作用域暴露处理的URLNoPage

例子:



<c:redirect>标签

<c:redirect>标签将浏览器重定向到一个备用URL提供自动URL重写,它支持上下文相关的URL和支持

<c:param>标签。

属性:

<c:redirect>标签具有以下属性:

属性描述RequiredDefaulturlURL重定向用户的浏览器YesNonecontext/后面的本地Web应用程序的名称No当前应用

例子:


上面的例子重定向请求到http://www.baidu.com


<c:param>标签

<c:param>标签允许适当的URL请求参数到指定的URL和任何必要的URL编码。

在一个<c:param>标签的name属性表示参数的名称,value属性表示的参数值;

属性:

<c:param>标签具有以下属性:

属性描述必需默认值name在URL中设置的请求参数的名称YesNonevalue在URL中设置的请求参数的值NoBody


0 0
原创粉丝点击