`

Tag Library-定制标记库

阅读更多

定制标记库
1 编写标记处理类
public class TimerTag extends TagSupport{
 private long start;
 private long end;
 public int doStartTag(){       //doStartTag标记开始方法
  start=System.currentTimeMillis();
  return EVAL_BODY_INCLUDE;//
 }
 public int doEndTag() throws JspTagException {//doEndTag标记结束方法
  end=System.currentTimeMillis();
  long elapsed=end-start;
  try{
   JspWriter out=pageContext.getOut();
   out.println("running time:"+elapsed+"ms.");
  }catch(IOException e){
   throw new JspTagException(e);
  }
  return EVAL_PAGE;//
 }
}
2 编写.tld文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
    version="2.0"> 
 
    <description>custion web utility tags</description> //对当前标记库的描述 
    <tlib-version>1.0</tlib-version>   //当前标记库的版本 
    <short-name>util</short-name>  //对当前标记库使用时的前缀名称 
    <uri>http://163.com</uri> //可任意
    
     <tag> 
         <description>calc code running time</description>  //对当前标记的描述 
         <name>timer</name>  //标记我名称
           <tag-class>com.tags.TimerTag</tag-class> 当前标记对应的处理类的具体名称
           <body-content>JSP</body-content>  //可有empty,JSP 
     </tag> 
 </taglib> 
3 使用格式
jsp页面
<%@ taglib prefix="util" uri="http://163.com" %> 添加指令
<util:timer></util:timer>

总结:
TLD是一个XML文件,在WEB-INF目录下
<taglib>根元素
 <tlib-version>version</tlib-version>标记库的版本
 <short-name>prefix</short-name>前缀名称
 <uri>uri</uri>引用的地址
 ...
 <tag>
  <name>tagname</name>标记名称
  <tag-class>classname</tag-class>标记对应的处理类
  <tei-class>classname</tei-class>标记处理类的辅助处理类
  <body-content>[JSP,empty,scriptless,tagdependent]</body-content>
  //jsp表示标记中可以包含html,java代码,这些代码可以被运行
  //empty表示标记中不包含内容
  //scriptless表示标记中可以包含EL,jsp的动作代码,不可以包括JAVA脚本代码
  //tagdependent表示标记中可以包含
  <attribute>标记的属性
             <name>pattern</name>属性的名称
             <required>false</required>表示该属性是否是必须的
             <rtexprvalue>false</rtexprvalue>该属性是否可以是JSP的表达式
    </attribute>  
 </tag>
</taglib>

TagSupport运行原理(不能对标记所包含的内容进行二次加工)
 
        
BodyTagSupport运行原理(可以对开始和结束标记所包含的内容进行处理)
   
          
 public int doAfterBody()throws JspTagException{
  BodyContent bc=getBodyContent();取内容
  String input=bc.getString();取内容
  JspWriter out=bc.getEnclosingWriter();
  
  String newContent=input;
  try{
   out.println(newContent);
  }catch(IOException e){
   throw new JspTagException(e);
  }
  return 1;
 }

分享到:
评论

相关推荐

    JSP 标准标记库(JSP Standard Tag Library,JSTL)

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。

    将定制标签库开发为标记文件

    这篇博客文章“将定制标签库开发为标记文件”深入探讨了如何创建自己的标签库,并将其转化为标记文件,以便在JSP页面中方便地使用。以下是对这一主题的详细阐述: 首先,我们来理解什么是自定义标签库。在Java Web...

    Calendar Tag Library-开源

    Calendar Tag Library 是基于JavaServer Pages (JSP) 标记库技术构建的,它提供了一系列预定义的JSP标签,开发者可以直接在JSP页面中使用这些标签来生成日历视图。通过这些标签,开发者无需编写复杂的JavaScript或...

    Struts Tree View Tag Library-开源

    这个标记库提供了一系列的JSP标签,允许开发者以声明式的方式构建交互式的、动态更新的树结构,而无需深入JavaScript或CSS的复杂性。 首先,`tree.css` 文件是样式表,它包含了用于呈现树形视图的各种样式规则。...

    java源码:Google Tag Library.zip

    Tag Library Descriptor (TLD) 文件是JavaServer Pages (JSP) 标签库的一部分,用于定义自定义标签的行为和属性。在这个文件中,Google Tag Library的所有自定义标签都进行了描述,包括它们的名称、参数、返回类型...

    使用JSTL需要的jar包程序文件

    JSP 标准标签库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问. 如果要使用JSTL,则必须将...

    自定义标签,jstl应用

    JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。 JSP 技术的优势之一在于其定制标记库工具。除了核心 JSP 标记,如 jsp:include 之外,定制标记库...

    jakarta-taglibs-standard-current-src.zip

    JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也...

    aesh-extensions-0.51.zip

    综上所述,"aesh-extensions-0.51.zip" 为Java命令行工具提供了丰富的扩展功能,而 "tag-library.zip" 则是Java Web开发中的一个优雅的JSP标记库,两者都是开源项目,鼓励社区参与和共享。通过利用这些资源,开发者...

    jsp详细教程实例全集

    11文件夹:定制标记库(Tag Library),包括14个实例。 12文件夹:表达式语言(Expression Language),包括8个实例。 13文件夹:Servlet,包括3个实例。对应的WEB-INF\src\mil\zcz\jsp\servlet文件夹下包含68个...

    jstl-1.2.jar 官方下载

    JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也...

    jstl-1.2.jar

    JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据...

    jstl相关的jar包和文档内容

    JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据...

    定制标签库

    "定制标签库"这个标题暗示了我们将在讨论如何构建和使用这样的库,以便更好地控制和扩展HTML的标记能力。 标签库(Tag Library)在JavaServer Pages (JSP) 和其他类似的服务器端技术中扮演着重要角色。它将可重用的...

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

    自定义标记的实现基于JSP Tag Library(标签库)。一个标签库由一组相关的自定义标记组成,定义在一个XML文件(TLD,Tag Library Descriptor)中。TLD文件描述了每个标记的属性、行为和关联的Java类。当JSP容器遇到...

    Taglibrary for Jess-开源

    "Taglibrary for Jess-开源" 指的是一个专为Java Server Pages (JSP)设计的开源标签库,它使得开发者能够方便地在JSP页面中使用Jess,一个流行的Java规则引擎。 **描述详解:** 描述部分提到,这个JSP标记库的目的...

    jsp 定制标签(Custom Tag).docx

    **一、创建Tag Handler Class(标记处理器类)** 1. **空Body的标签处理器类** 要创建一个没有Body内容的自定义标签,你需要实现`javax.servlet.jsp.tagext.Tag`接口或继承`TagSupport`类。主要覆盖以下两个方法:...

    JSTL Step by Step 中文教材.pdf

    它于2002年6月发布了1.0版本,并由四个定制标记库和一对通用标记库验证器组成。 #### 二、JSTL 1.0 版本概述 JSTL 1.0版本主要包含了以下几个部分: - **核心标记库(Core Tag Library)**:提供了一组常用功能,...

    jstl中文教程pdf

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。在 developerworks 上其新系列...

Global site tag (gtag.js) - Google Analytics