随笔-6  评论-38  文章-40  trackbacks-0

一 : 初识JSTL

JSTL :JSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括 :

1 迭代
2 条件判断
3 数据管理格式化
4 XML操作
5 数据库访问

JSTL 1.0 有四个定制标记库:

1 core
2 format
3 xml
4 sql

1.core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。

2.format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。

3.xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据。

4.sql 库定义了用来查询关系数据库的操作。


二 : 补充 :

JSP技术的优势之一在于其定制标记库工具。除了核心JSP标记,如 jsp:include 之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。一旦您创建了定制标记库(简称 taglib),当您扩展项目或转向另一个项目时您可以重复使用这些标记。您还可以将taglib传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您Web应用程序的其它部分使用。在这一系列的下一部分,我将向您展示如何创建自己的定制标记库,但现在我们将重点关注JSP标准标记库(JSTL)。

JSTL实际上是一组标准化用于JSP 1.2的定制标记库。许多JSTL标记都与核心JSP标记类似,但它们可以提供更多的功能。例如,

c:import 标记与我们在前一部分中介绍的 include 和 jsp:include 指令极其类似(见 参考资料)。 与include指令一样, c:import 可以帮助您读取(populate)您Web站点或Web应用程序的页面,但其功能性扩展超出了核心JSP标记的范畴。 

在 JSP最佳实践这一部分,我们将使用 c:import 标记来了解如何将Web页面从JSP转变成JSTL。但是,在开始使用新标记之前,我们需要将JSTL装载到Web容器中。

JSTL 设置

虽然JSTL计划捆绑到下一波Web容器中,但您目前必须自己进行设置。按以下步骤操作以将JSTL装载到Web容器中:

从 apache.org下载 jakarta-taglibs-standard-current.tar.gz 。

解压缩下载的文件。
将 jakarta-taglibs/standard-1.0.3/tld/c.tld 拷贝到 WEB/INF/tlds 目录。

将 jakarta-taglibs/standard-1.0.3/lib 中的所有JAR文件拷贝到 WEB-INF/lib 目录。

将以下显示的条目添加到 WEB-INF/web.xml 部署描述符中。

< taglib >
  
< taglib-uri > http://java.sun.com/jstl/core </ taglib-uri >
  
< taglib-location > /WEB-INF/tlds/c.tld </ taglib-location >
</ taglib >


重启Web容器。
这是JSTL设置的速成版本,它可以满足大多数情况。更详细信息请参阅 参考资料部分。

联合 JSTL标记

如果您希望在JSP页面上使用任何JSTL标记,您首先必须在该页面上声明标记库前缀和URL。我们正在使用核心JSTL库,因此使用的标准前缀是 c (代表 核心)。表1显示增加了 taglib 指令的Web站点索引文件:


表1:索引文件的taglib指令

< %@ page  language ="java"  contentType ="text/html"  % >
< %@ taglib  prefix ="c"  uri ="http://java.sun.com/jstl/core"  % >

< html >
    
< head >
         
< title > newInstance.com </ title >
         
< meta  http-equiv ="Content-Type"  content ="text/html; charset=iso-8859-1"   />
         
< link  href ="/styles/default.css"  rel ="stylesheet"  type ="text/css"   />
    
</ head >

    
< body >
        
< jsp:include  page ="header.jsp"  flush ="true" >
             
< jsp:param  name ="pageTitle"  value ="/oblog312/newInstance.com" />
             
< jsp:param  name ="pageSlogan"  value =" "   />
        
</ jsp:include >

        
< %@ include  file ="/navigation.jsp"  % >
        
< jsp:include  page ="bookshelf.jsp"  flush ="true"   />

        
< jsp:include  page ="/mt-blogs/index.jsp"  flush ="true"   />

        
< %@ include  file ="/footer.jsp"  % >
    
</ body >
</ html >

在向JSP页面添加了JSTL taglib之后,您可以使用核心库中的任何标记,只需把标记的前缀改为 c 。为了了解这一流程,我们将尝试把页面从 jsp:include 标记转换成 c:import 标记。 表2显示了本系列第二部分介绍的 jsp:include 实例(见 参考资料)转为使用新 c:import 标记。


表2:转为JSTL

< %@ page  language ="java"  contentType ="text/html"  % >
< %@ taglib  prefix ="c"  uri ="http://java.sun.com/jstl/core"  % >

< html >
    
< head >
         
< title > newInstance.com </ title >
         
< meta  http-equiv ="Content-Type"  content ="text/html; charset=iso-8859-1"   />
         
< link  href ="/styles/default.css"  rel ="stylesheet"  type ="text/css"   />
    
</ head >

    
< body >
        
< jsp:include  page ="header.jsp"  flush ="true" >
             
< jsp:param  name ="pageTitle"  value ="/oblog312/newInstance.com" />
             
< jsp:param  name ="pageSlogan"  value =" "   />
        
</ jsp:include >

        
< %@ include  file ="/navigation.jsp"  % >

        
< c:import  url ="bookshelf.jsp"   />
        
< c:import  url ="/mt-blogs/index.jsp"   />

        
< %@ include  file ="/footer.jsp"  % >
    
</ body >
</ html >

这一段程序与前面一段JSP程序之间唯一的区别是 :

我们在c:import 中使用了 url 属性
而不是在 jsp:include 中使用 page 属性

非常简单,是不是?做一个娱乐性练习,尝试自己转换一个页面,只需运行我们在“使用jsp:include管理动态内容”(本系列第二部分,参阅 参考资料)中使用的JSP程序代码并将其转换成JSTL,如表2所示。

如果您进行了仔细研究,您可能注意到我避免改变表2中的header inclusion程序代码。header程序代码包含参数,它增加了在此讨论的复杂性。在 JSP 最佳实践的下一部分,您将了解如何使用 c:import 来传递参数。我还将向您介绍 c:import 标记的一些特性,它可以提供比简单的 jsp:include 标记更多的功能。

posted on 2006-11-26 14:09 一手的小窝窝 阅读(228) 评论(0)  编辑  收藏 所属分类: JAVA

只有注册用户登录后才能发表评论。


网站导航: