JSP标签库介绍

定制标签内幕

一个简单的定制标签包括了以下几个要素:

1、JavaBean:为了充分利用Java的面向对象特性,重用代码应当放置在独立的代码容器内

。这些JavaBean可不是标签库的一部分。他们是标签库用来执行所分配任务的基础代码模块。



2、标签处理器:这是标签库的真正核心。标签处理器(tag handler)引用它所需要的任何外部材料(JavaBean)并且负责访问JSP页面的信息(PageContext对象)。而JSP页面则把页面上设置的标签属性都传递给标签处理器,JSP页面上的标签标示的内容也是这样处理的。当标签处理器完成其处理过程,它就会把处理后的输出结果回送给JSP页面做进一步处理。



3、标签库描述符(TLD文件):这是一种很简单的XML文件,TLD文件描述和说明了属性、信息和标签处理器文件位置等信息。JSP 容器使用这一文件来映射被调用标签库的位置和用法。



4、Web站点的web.xml文件:其实这就是你的Web站点上的初始化文件。在这个文件内你可以定义Web应用程序中使用的定制标签,还可以定义用来描述每个定制标签的TLD文件。



5、发布文件(WAR或JAR文件):如果你打算重用定制标签,那么你肯定需要想个简便的办法把标签从一个项目迁移到其他项目中去。把标签库打包成一个JAR文件就是这种既方便又高效的标签库发布方式。我们在以上的事例中没有建立JAR文件,但是如果你打算更进一步地了解JAR文件的细节,你不妨阅读“JSP WAR文件简介”。



6、JSP页面上的标签库声明:仅需使用标签库标示符即可方便地声明页面上存在的标签。标签库在页面上声明之后,你就可以随意使用它们了。



看起来会让你忙乎一阵子,实际上没那么糟糕。刚开始用的时候当然会有点棘手。其实真正关键的并不是编码而是把以上各个部分正确地组织起来。这种层次性的结构是很重要的,也正是如此才可以说标签库及灵活又易于使用。更重要的事,这些层次可以让整个建立标签库的过程都能通过JSP IDE自动完成。今后的JSP IDE更可以自动完成创建定制标签的大部分工作,而你自己则只需要负责建立代码和标签处理器。



(注意:一个标签处理器只定义一个定制标签;而一个标签库则是很多个标签处理器的集合,它们执行同一任务。)



建立你的第一个标签

以下的进阶指南将介绍如何把JSP扩展为具有自己的HTML编码功能

。这种编码方法用<和 >符号代替HTML代码,而且很容易经过扩展以执行其他编码操作。整个示例虽然简单,但它确实向你说明了定制标签的最基础要素。



创建JavaBean

代码中的任何可重用部分都应该包含在JavaBean内。这一点是很重要的。这样你就可以在其他项目中重用这些代码了。由于任何放置在标签处理器内的代码都不会在标签以外被重用,所以代码的重用部分要与之分离。在我们的示例中,HTML编码逻辑很一般,所以我们直接把他们放在了JavaBean内,请参看清单B。



创建标签处理器

标签处理器使用了清单C的代码。

这些代码很简单,其中包括:
读取包含在打开和关闭标签内的文本。
调用HTML编码函数。
将结果返回给JSP页面。
创建标签描述符

我们需要描述自己的标签以便系统知道他们到底具有什么含义。TLD文件通常就以标签处理器命名并被存放在"/WEB-INF/"目录之下。该文件的文件扩展名是.tld。请参看清单D。


更新Web XML文件

现在你就可以告诉JSP容器使用标签库了。为此你需要修改web.xml文件:增加一个taglib项以注册标签库并为标签分配一个URI。URI是Web站点上唯一应用于这一特定标签的索引。由于标签今后还可能用在不同的Web站点上,所以你最好采用完整的URL和/或者包名字(package name)来保证这一唯一性。示例代码请参看清单E。

使用新标签

定制标签现在就可以用在你的JSP页面上了

。你只需要在页面上使用taglib指示符声明所要采用的标签即可。标签通过其唯一的URI被索引,然后被分配给一个前缀(prefix)。这一前缀并没有什么特别的意义,只要它不和指示符内的其他名称不冲突就可以了。请参看以下的清单F和G。



清单F:在JSP页面上使用HTML编码标签
<%@ taglib uri="HTMLEncode" prefix="Examples" %>

<html>
<head></head>
<body>
<pre>
<Examples:HTMLEncode>
< Hello , Simple sample >
</Examples:HTMLEncode>
</pre>
</body>
</html>


清单G:代码示例输出
< Hello , Simple sample >
which displays as:
< Hello , Simple sample >

实际上,我就用这个标签对页面上的所有代码示例进行了编码。你可以注意到定制标签是在服务器上进行处理的。这就是说,你不会在输出页面上看到定制标签。

正如你所看到的那样,建立标签并非难事。最麻烦的是学习标签处理器的整个细节。我们不过是触及了皮毛。由于这一过程需要采取的步骤很多,所以刚入门的JSP程序员可能在建立标签的时候会觉得很困惑。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值