读书人

JSTL核心库惯用标签

发布时间: 2013-07-16 22:38:05 作者: rapoo

JSTL核心库常用标签

JSP标准标签库 —— JSTL

JSTL标签库一部分是Tag Library(标签库),另一部分是表达式语言.标签库使用XML语法来定义所以标签.主要分为5种标签.

5种标签分别指定了5个URI,并对标签库的前缀作出约定.

????Core核心标签库chttp://java.sun.com/jsp/jstl/core<c:out>I18N本地化处理标签库fmthttp://java.sun.com/jsp/jstl/xml<fmt:formatDate>SQL数据库处理标签库sqlhttp://java.sun.com/jsp/jstl/sql<sql:query>XML处理标签库xml?http://java.sun.com/jsp/jstl/fmt<x:forBach>EL功能函数标签库fnhttp://java.sun.com/jsp/jstl/functions<fn:split>

?

?

?

?

Core标签库

Core标签库主要包括了一般用途的标签,条件标签,迭代标签和URL相关标签.

在JSP页面中使用Core标签,要使用taglib指令,指定引用标签库.

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

?

?

一、 一般用途标签

<c:out>

用于计算一个表达式并将结果输出到当前的JspWriter对象.其功能类似于<%=expression%>或${el-expression}.

(1) 语法

语法1:没有标签体

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

?

语法2:有标签体

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

?

?

(2) 属性

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

?

?

语法2: 将body content储存至varName变量中,设置其范围为scope.

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

?

?

语法3:将value存储至target对象的property属性.

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

?

?

语法4: 将body content存储至target对象的property属性.

<c:set target="target" property="propertyName">    body content</c:set>

?

?

(2) 属性

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

?

?

(2) 属性

将number变量从Session范围中移除.若我们不设定scope,则<c:remove>将会从Page,Request,Session及Application中顺序寻找是否存在名称为number的数据,若能找到时,则将它移除掉,反之则不会做任何的事情.

?

?

?

<c:catch>

<c:catch>用于捕获在其中嵌套的操作所抛出的异常对象(java.util.Throwable对象),并将异常信息储存到变量中.

?

(1) 语法

<c:catch [var="varName"] >    nested actions</c:catch>

?

?

(2) 属性

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

?

语法2:有标签体

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

?

?

(2) 属性

<c:choose> body content ( <when> and <otherwise> subtags)</c:choose>

?

?

(2) 属性

?

(3) 约束

<c:choose>本身只是 <c:when> 和 <c:otherwise> 的父标签.

<c:choose>的body content只能有:

? ? ? ? 空白

? ? ? ? 1或多个 <c:when>

? ? ? ? 0或多个 <c:otherwise>

?

?

?

<c:when>

<c:when> 是<c:choose>的子标签,表示一个可选的条件.

?

(1)?语法

<c:when test="testCondition" >    body content</c:when>

?

?

(2)?属性

<c:otherwise> body content</c:otherwise>

?

?

(2)?属性

?

(3)?约束

<c:otherwise> 必须在 <c:choose> 和 </c:choose>之间

在同一个 <c:choose> 中,<c:otherwise> 必须是最后的标签

?

(4)?说明

在运行时,如果所有 <c:when> 的test属性都不为true,则执行<c:otherwise> 的body content。

?

?

?

?

三、 迭代标签

迭代(Iterate)操作主要包含两个标签:<c:forEach>和<c:forTokens>.

?

?

<c:forEach>

<c:forEach> 用于遍历集合中的成员.重复执行<c:forEach>的body content.

?

(1) 语法

语法1:遍历循环多个对象的集合

<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>    body content</c:forEach>

?

?

?

语法2:循环固定的次数

<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>    body content</c:forEach>

?

?

(2) 属性

<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> body content</c:forTokens>

?

?

(2) 属性

<c:import url="url" [context="context"] [var="varName"] [scope="{page|request|session|application}"] [charEncoding="charEncoding"]> optional body content for <c:param> subtags</c:import>

?

?

语法2:资源的内容作为Reader对象被导出.

<c:import url="url" [context="context"] varReader="varReaderName"    [charEncoding="charEncoding"]>    body content where varReader is consumed by another action</c:import>

?

?

(2) 属性

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

?

?

语法2:body content代表查询字符串(Query String)参数

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

?

?

(2) 属性

<c:redirect url="url" [context="context"] />

?

语法2:body content代表查询字符串参数

<c:redirect url="url" [context="context"] >    <c:param> subtags</c:redirect >

?

?

(2) 属性

<c:redirect url="http://www.javaworld.com.tw" />

?

那么网页将会自动导向到http://www.javaworld.com.tw。另外,我们也可以加上context这个属性,用来导向至其他 web站台上的文件,例如:导向到/others下的/jsp/index.html时,写法如下:

<c:redirect url="/jsp/index.html" context="/others" />

?

<c:redirect> 的功能不止可以导向网页,同样它还可以传递参数给目标文件。在这里我们同样使用<c:param>来设定参数名称和内容。

?

?

?

?

<c:param>

<c:param>为一个URL添加请求参数.

?

(1) 语法

语法1:在属性value中指定参数值

<c:param name="name" value="value">

?

?

语法2:标签体中指定参数值

<c:param name="name">    paramter value</c:param>

?

?

(2) 属性

?

(3) Null和错误处理

如果name是null或空,那么<c:param>标签什么都不做.

如果value是null,那么将作为空值处理.

?

(4) 说明

<c:param>作为<c:import>,<c:url>,<c:redirect>的嵌套标签使用,为URL添加请求参数,并对参数中的特殊字符进行正确处理的编码.例如空格将被编码为"+".

?

读书人网 >JavaScript

热点推荐