`
wezly
  • 浏览: 484639 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

自定义jsp标记库简介

阅读更多

1. 基本步骤 实例-输出“hello,eking”
 1) 标记处理类

 

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;

public class HelloTag extends TagSupport {
  public int doEndTag() throws javax.servlet.jsp.JspException {
    return  Tag.EVAL_PAGE;
  }
  public void release() {
    super.release();
  }
  public int doStartTag() throws javax.servlet.jsp.JspException {
      JspWriter out=pageContext.getOut();
      try{
        out.println("hello, eking");
      }catch(java.io.IOException ioe){
        ioe.printStackTrace();
      }
      return Tag.SKIP_BODY;
  }
}

 

 2)标记库描述符hellodemo.tld文件
 

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>hellodemo</shortname>
  <tag>
     <name>hello</name>
     <tagclass>WebLayer.JspTags.HelloTag</tagclass>
     <bodycontent>empty</bodycontent>
  </tag>
</taglib>

 

 

  3) 在web.xml中加入
 

  <taglib>
    <taglib-uri>/WEB-INF/hellodemo.tld</taglib-uri>
    <taglib-location>/WEB-INF/hellodemo.tld</taglib-location>
  </taglib>

 

 

  4)hello.jsp
  

 <%@ taglib uri="/WEB-INF/hellodemo.tld" prefix="demo" %>
 ....
 <demo:hello/>

 
2.TLD描述文件
1)一个taglib下可以有多个tag
2)tag标签下的bodycontent可以为:
   empty: 空标记,即起始标记和结束标记之间没有内容
   JSP:标记题为jsp文本,将和页面上的jsp文本一起被处理
   tagdependent:标记体内容由java标记处理类 来进行处理,不能当作jsp文本

 

3.标记处理类
   必须实现javax.servlet.jsp.tagext包中接口(Tag,IterationTag,BodyTag)之一。为了简化开发,我们只需要继承包中的两个抽象类,再重载某些方法即可
1)TagSupport: 标记体为空或不需要处理标记体
2)BodyTagSupport: 标记体需要被处理 (对应的bodycontent=tagdependent)

 

4.自定义标记的生命周期
1)doStartTag()
   处理起始标记时调用,返回一个int值表明对标记体的处理方式:
        Tag.SKIP_BODY:忽略标记体  (对应的bodycontent=empty)
        Tag.EVAL_BODY_INCLUDE: 处理标记体 
2)doEndTag()
   标记体结束时调用,返回一个int值表明对jsp余下页面的处理方式:
        Tag.EVAL_PAGE : 继续执行jsp文件的内容
        Tag.SKIP_PAGE : 停止执行
3)release()
   释放资源

下面两个方法只有在继承BodyTagSupport类的时候才需要重载
4)doInitBody()
   在调用doStartTag()之后,处理标记体之前被调用
5)doAfterBody()
   在处理完标记体后,调用doEndTag()之前调用。
   该方法的返回值代表对标记体的处理方式:
      IterationTag.EVAL_BODY_AGAIN : 需要再次处理标记体
      Tag.SKIP_BODY: 结束对标记体的处理

5.带属性的标记-从页面向自定义标记传递信息
1)页面
 <demo:hello name="username" />
 属性值也可以是表达式,如 :<demo:hello name="<%=request.getParameter("username")%>" />
2)标签处理类
必须提供get,set方法对属性进行操作
每个属性的set方法会在doStartTag()之前自动被调用
3)TLD文件中必须对所有的属性进行定义

<tag>
  ...
  <attribute>
     <name>属性名</name>
     <required>true表示属性必须存在,false表示可由可无</required>
     <rtexprvalue>
       定义属性是否允许使用表达式,为false表示只允许使用字符串</rtexprvalue>
  </attribute>

 

 

分享到:
评论

相关推荐

    JSP之自定义标记示例程序

    总结来说,JSP的自定义标记是JSP技术中的一项重要特性,它提供了扩展JSP能力的方式,允许开发人员创建自己的标签库,使页面代码更加模块化、可读性更强。通过学习并掌握自定义标记的使用,可以提升你在JSP开发中的...

    ppt课件-第6章 JSP自定义标记.zip

    - **扩展性**:通过添加新的标记库,可以轻松扩展JSP应用的功能。 通过学习和实践JSP自定义标记,开发者可以构建出更高效、更可维护的Web应用。同时,了解和掌握自定义标记也是成为熟练JSP开发者的必经之路。

    第6章 JSP自定义标记.ppt

    自定义标记库的发布涉及到将标记库的定义文件(TLD,Tag Library Descriptor)放置到服务器的特定目录下,以便JSP编译器可以找到并解析这些自定义标记。 总的来说,JSP自定义标记是一种强大的工具,能够帮助开发者...

    JSP自定义标记

    JSP自定义标记(Tag Libraries)通常由两部分组成:标记库描述符(TLD, Tag Library Descriptor)和标记处理类(Tag Handler Class)。TLD是XML文档,用于定义标记的元数据,如标记名称、属性、行为等。而标记处理类...

    掌握自定义JSP标签(html).

    然而,有时预定义的标签并不能满足我们所有的需求,这时就需要自定义JSP标签来扩展功能。本教程将深入讲解如何创建和使用自定义JSP标签,以实现更加灵活的HTML渲染和业务逻辑处理。 1. 自定义标签的概念: 自定义...

    自定义JSP标签

    要实现自定义JSP标签,首先需要理解JSP标签库(Tag Library)的概念。标签库是一组自定义标签的集合,它们被封装在TLD(Tag Library Descriptor)文件中。TLD文件是XML格式的,用于描述标签的行为、属性、变量以及...

    标记库,tag实例,java技术

    在IT行业中,尤其是在Java开发领域,"标记库"(Tag Library)是一个重要的概念,它与JSP(JavaServer Pages)紧密相关。标记库是预定义的一组功能,以标签(Tags)的形式提供,使得开发者可以更方便地创建动态网页。...

    JSP自定义标签学习笔记

    自定义标签是JSP的一种扩展,它允许开发者定义自己的标签库,实现特定的功能,这些标签可以在多个JSP页面中重复使用,提高代码复用率。 2.2 标签相关概念 自定义标签通常由三部分组成:标签处理类、TLD(Tag ...

    JSP教程-标记库(简单实例)

    通过以上介绍,你已经了解了JSP标记库的基本概念,以及如何创建和使用一个简单的自定义标签。在实际开发中,掌握好标记库的使用能大大提高JSP应用程序的质量和效率。希望这个教程对你有所帮助!

    JSP自定义标记(四则运算)

    这是个实现ComputeSimpleTag标记的文件,该标记可以实现两个数字的加减乘除。自定义为,然后再输入两个数字就可以实现

    JSP扩展——自定义标签

    总结来说,自定义JSP标签通过编写标记处理类和标记描述文件实现。标记处理类负责处理标签的逻辑,而TLD文件提供了元数据,将自定义标签与处理类关联起来。这个过程使得开发者可以创建具有特定功能的可重用组件,增强...

    jsp自定义带属性的标签

    6. **在JSP页面中使用自定义标签**:最后,在JSP页面中使用`&lt;%@ taglib %&gt;`指令导入标签库,并使用前缀加上标签名称来调用自定义标签。在调用标签时,可以通过类似HTML属性的方式设置标签的属性值。 #### 三、示例...

    JSP自定义标签详解

    二、自定义JSP标签的格式: 1. 使用自定义标签需要指定标签库的前缀(Prefix),前缀用于识别标签库,而URI(Uniform Resource Identifier)则用于定位TLD文件,其中包含了标签处理类的信息。 2. Web容器在启动时会...

    自定义JSP分页标签

    ### 自定义JSP分页标签实现详解 #### 一、引言 在Web开发中,分页是一项常用且重要的功能,它可以有效地管理大量的数据展示,提高用户体验。而在Java Web开发中,利用JSP(Java Server Pages)技术进行网页开发时...

    基于WTP开发自定义的JSP编辑器

    Structured Model是实现自定义JSP编辑器的核心,因为它提供了对JSP语法的深度理解,使编辑器能够提供上下文相关的帮助,如自动补全、错误检测等。 #### 三、Structured Text Editor:构建自定义JSP编辑器的基石 ...

    自定义标记实现银行系统的数字大小写转换

    实现这个自定义标记,首先需要定义一个Java类,该类继承自`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`。在这个类中,我们需要编写处理数字转换的核心逻辑,可能包括以下几...

    jsp-taglibs:有用的JSP自定义标记库

    Phylliscoders JSP自定义标签库 朝鲜语的有用的JSP定制标签库这是您可能需要在韩国开发的JSP定制标签库。 它将不断更新。 安装 在dist/phylliscoders.jar路径中下载文件后,将jar文件复制到项目的WEB-INF/lib文件夹...

    在JSP中使用嵌套的自定义标记 (2002年)

    Java Server Page(JSP)是近几年发展起来的用于生成动态页面的技术,在1.1版本里推出了一项的新功能:允许用户在JSP页面中开发和使用自定义的标记.复杂自定义标记形式(如嵌套)有助于增强JSP页面的功能,扩充自定义...

    自定义(jsp)标签

    - `doEndTag()`: 当JSP引擎到达自定义标签的结束标记时会调用此方法,其返回值决定了是否继续执行后续代码。 2. **JspTag**: 这是一个标记接口,用作 `Tag` 和 `SimpleTag` 的基类,本身没有方法和属性。 3. **...

Global site tag (gtag.js) - Google Analytics