e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> 深入浅出taglib >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
深入浅出taglib
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
>

Tag处理类的方法

Tag标签类型

所调用的方法


基本标签

doStartTag, doEndTag, release

带属性的标签

doStartTag, doEndTag, set/getAttribute1...N, release

带内容的标签

doStartTag, doEndTag, release

带内容的标签,且

内容重复循环

doStartTag, doAfterBody, doEndTag, release

带内容的标签,且内容与JSP交互

doStartTag, doEndTag, release, doInitBody, doAfterBody, release

一个tag处理类可以通过javax.servlet.jsp.PageContext来与JSP交互,通过javax.servlet.jsp.PageContext类,tag处理类可以访问JSP中的request、session和application对像。

如果tag标签是互相嵌套的,那内层的tag处理类可以通过它的parent属性来访问上层的tag处理类。

一般情况都将所有的tag处理类打成了JAR的包,以便于发布。

Tag库描述(简称TLD)

Tag库是用xml语言描述的,TLD包括了tag库中所有tag标签的描述,它一般用来被jsp服务器用来校验tag的语法正确性,或者被jsp开发者用来开发新的标签。

TLD的文件扩展名必须为.tld,而且必须放在当前WEB应用的WEB-INF目录或其子目录中。

一个TLD的内容的开头必须遵守标准的XML开头,用于描述DTD和xml的版本,例如:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

TLD必须以<taglib>来作为它的根元素,<taglib>的子元素如下表:

<taglib>的子元素

Element

Description

tlib-version

Tag库的版本

jsp-version

Tag库所需要的jsp的版本

short-name

助记符,tag的一个别名(可选)

uri

用于确定一个唯一的tag库

display-name

被可视化工具(诸如Jbuilder)用来显示的名称(可选)

small-icon

被可视化工具(诸如Jbuilder)用来显示的小图标(可选)

large-icon

被可视化工具(诸如Jbuilder)用来显示的大图标(可选)

description

对tag库的描述(可选)

listener


参见下面listener元素

tag

参见下面tag 元素

Listener元素

一个tag库可能定义一些类做为它的事件侦听类,这些类在TLD中被称为listener 元素,jsp服务器将会实例化这些侦听类,并且注册它们。Listener元素中有一个叫listener-class的子元素,这个元素的值必须是该侦听类的完整类名。

Tag元素

每个tag元素在tag库中都要指出它的名字、类名、脚本变量、tag的属性。其中脚本变量的值可以直接在TLD中定义或通过tag附加信息的类来取得。每个属性描述了这个属性是否可以省略,它的值是否可以通过<%= …%>这样的JSP语法来获得,以及属性的类型。

每一个tag在TLD中对应一个tag元素,下表是tag元素的子元素:

Tag元素的子元素

元素名称

描述

name

独一无二的元素名

tag-class

Tag标签对应的tag处理类

tei-class

javax.servlet.jsp.tagext.TagExtraInfo的子类,用于表达脚本变量(可选)

body-content

Tag标签body的类型

display-name

被可视化工具(诸如Jbuilder)用来显示的名称(可选)

small-icon

被可视化工具(诸如Jbuilder)用来显示的小图标(可选)

large-icon

被可视化工具(诸如Jbuilder)用来显示的大图标(可选)

description

此tag标签的描述

variable

提供脚本变量的信息(同tei-class)(可选)

attribute

Tag标签的属性名

以下章节介绍对于不同类型的tag,如何具体地实现它们。

简单的tag

tag处理类

简单的tag处理类必须实现Tag接口的doStartTag和doEndTag方法。当jsp引擎碰到tag标签的开头时,doStartTag被调用,因为简单的tag没有body,所以此方法将返回 SKIP_BODY。当jsp引擎碰到tag标签的结尾时,doEndTag被调用,如果余下的页面还要被计算,那它将返回EVAL_PAGE,否则将会返回SKIP_PAGE。

以下是例子:对于标签 <tt:simple /> ,它的tag处理类实现如下:

  1. public SimpleTag extends TagSupport
  2. {
  3. public int doStartTag() throws JspException
  4. {
  5. try {
  6. pageContext.getOut().print(“Hello.”);
  7. }catch

    (Exception e){
  8. throw new JspTagException(“SimpleTag: “ + e.getMessage());
  9. }
  10. return SKIP_BODY;
  11. }
  12. public int doEndTag()
  13. {
  14. return EVAL_PAGE;
  15. }
  16. }

注意:如果tag标签没有内容的话,那必须定义body-content元素为空,例如

<body-content>empty</body-content>

带属性的tag标签

tag处理类

对于tag标签的每个属性,你必须依照JavaBeans规范来定义其属性,以及get和set方法。以struts的logic:present 标签为例,

<logic:present parameter=”Clear”>

与此相应,此tag处理类应有如下方法和定义:

  1. protected String parameter = null ;
  2. public String getParameter()
  3. {
  4. return this .parameter;
  5. }
  6. public void setParameter(String parameter)
  7. {
  8. this .parameter = parameter;
  9. }

注意:如果你的属性名为id,而且你的tag处理类是从TagSupport类继承的,那你就不需要定义它的属性和set和get方法,因为他们早已在TagSupport被定义过了。

Attribute元素

对于tag标签的每个属性,你必须定义它是否必须的,它的值是否可以用诸如<%= …%>

上一页  1 2 3 4 5 下一页
  • 上一篇教程: 在JSP中编写你的第一个Tag
  • 下一篇教程: 如何使用XML实现多渠道接入网站的构架
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.