JSTL改进JSP来简化网页的实现过程(2)

2008-02-23 09:40:58来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

JSTL标记库

至此,我已经解释了一些基本原理并且涵盖了EL语法。我要专门讨论四种JSTL标记库。我主要讨论核心库,因为它是你一定要使用的;但是,我也会详细的讨论其余几个,以便你能启动它。

首先,尽管我应该更多地谈论JSTL标记库的两种风格,我上面提到的每个JSTL标记库以两个版本出现:一个支持褂肊L的表达式;另一个支持标准JSP表达式。当你引入任何标记库到一个JSP页时,你要定义一个前缀,该前缀指定了与库中标记相对应的命名空间。

四种标准标记库,和他们的JSTL规范定义的前缀常规,列表如下。记住:你可以定义自己的前缀,但是这绝对没有什么好处。

四种标准标记库



为了使用页中的核心标记库( 实际上,你使你的页对标记库的命名空间可见),在你的页首包含下列例子中的指令:

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


为了使用该标记库的标记,用你在你的包含语句中设计好的前缀,在你的页中给每个标记加上前缀:

<c:out value="${anExpression}"/>


核心数据库

让我们更详细的测试核心数据库,先看看他最通用的功能。

显示/设定值和异常处理

核心库的最基本的标记是c:out标记,它在页中显示一个EL表达式的值。一个使用c:out的表达式通常是这样:

We have <c:out value="${applicationScope.product.inventoryCount}" 

escapeXML="true" default="0"  /> of those items in stock.


上例中,value属性是我们送到页输出的表达式。我也说明了选项escapeXml的属性和默认属性。escapeXml的属性指定了XML字符(<、>、 &、 和 .)是否应该转化为相应的字符实体代码(这样他们可以让这些字符出现在一个HTML页中);默认属性用于EL不能估算出数值或者数值计算出来为空的情况。

注意:当EL支持完全贯穿整个JSP2.0的时候,你不需要使用c:out动作;你可以仅嵌套JSP表达式直接在页中。

另一个普遍使用的核心动作是c:set,它在页中设定一个变量。你可以用两种方法使用c:set动作,第一种方法设定在var属性中定义的变量到在value属性中定义的值上,方法如下:

<c:set var="customerID" value="$param:customerNumber" scope="session" />


上述的选择项scope属性指定了我们要在会话期范围内设定变量customerID;如果范围没有制定,范围默认为页。

c:set另一个强大的用途就是将c:set标记的体的内容赋给一个指定的变量:

<c:set var="cellContents">

<td>

<c:out value="${myCell}"/>

</td>

</c:set>


在上例中,c:set动作定义了名为cellContents(在页的范围内)的变量,该变量拥有在标记的体中定义的内容。在这种情况下,体定义了一个HTML表格单元格元素,计算体中的c:out动作,并且该计算的结果包括在体中的字符串直接量值。

就像你预想的那样,JSTL进行异常处理有点早。在典型的JSP页中,你有两种异常处理的方法:试图/捕捉直接嵌入到页中的小脚本代码中的块;或者用一个JSP errorPage指令。JSP errorPage指令提供一个良好的捕捉所有异常的方法来处理页中任何可能的异常。JSTL用一个c:catch动作提供一个好的可选择的方式。这个c:catch动作提供一个更细粒度的有效方法来处理异常。而且没有嵌入Java代码到页中。一个c:catch动作是这样的:

<c:catch>

 <!--. . . some set of nested JSTL tags below which would be hit on an exception-->

</c:catch>



c:catch动作有一个可选的属性,即一个指向抛出异常的变量。

你可能不怎么愿意使用c:remove标记。这个标记有用于变量名和范围的属性,并且可从指定的范围内删除指定的变量。

上一篇: JSTL改进JSP来简化网页的实现过程(3)
下一篇: JSTL改进JSP来简化网页的实现过程(4)

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:控制动态servlet图形处理(2)

下一篇:read appfuse-初始化-2