`
huanglanfa
  • 浏览: 21224 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java自定义标签开发

阅读更多
Test.jsp 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'Test.jsp' starting page</title>
  </head>

  <body>
    This is my JSP page. <br>
    Date : <%= new java.util.Date().toString() %> <br>
    File : <input value="<%= request.getServletPath() %>" />
  </body>
</html>

为了将这个这个Test.jsp改成自定义标签方法,我们分别使用简单标签和内容标签两种不同的方式实现。

1. 简单标签

由于我们需要输出两个内容(日期和文件名),因此我们为标签创建一个参数。具体代码:

DemoTag.java 
package com.mycompany;

import java.util.Date;

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

public class DemoTag extends TagSupport {
 
  public int doStartTag() throws JspException {   
    try {
      HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
      JspWriter out = pageContext.getOut();     
     
      if (parameter.compareToIgnoreCase("filename") == 0)
        out.print(request.getServletPath());
      else
        out.print(new Date());
     
    } catch (java.io.IOException e) {
      throw new JspTagException(e.getMessage());
    }
   
    return SKIP_BODY;
  }
 
  private String parameter = "date";
 
  public void setParameter(String parameter) {
    this.parameter = parameter;
  }
 
  public String getParameter() {
    return parameter;
  }
}

接下来,我们创建标签文件 MyTagLib.tld。标签文件其实只是一个XML格式的说明文件,内容也很简单。

MyTagLib.tld 
<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<tag>
  <name>demo</name>
  <tag-class>com.mycompany.DemoTag</tag-class>
  <body-content>empty</body-content>
  <attribute>
    <name>parameter</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
</tag>

</taglib>

在这个标签文件中,我们将我们创建的标签取名 demo,并声明了类型和参数(parameter)。将该文件保存在 /WEB-INF 下面。
当然,我们还需要将我们自定义的标签添加到 web.xml 中,否则还是无法使用。

web.xml 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <jsp-config>
    <taglib>
      <taglib-uri>/WEB-INF/MyTagLib</taglib-uri>
      <taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>
    </taglib>
  </jsp-config>

</web-app>

你可能在别处看到过类似的声明,只是没有外面的 jsp-config,但是我们使用的是DTD 2.4,如果不加,Eclipse 会提示出错。

到此为止,我们的自定义标签算是创建完毕。接下来,我们可以开始改写那个JSP文件来分离代码了。

Test.jsp 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="/WEB-INF/MyTagLib" prefix="mytag"%>
<html>
  <head>
    <title>My JSP 'Test.jsp' starting page</title>
  </head>

  <body>
    This is my JSP page. <br>
    Date : <mytag:demo parameter="date" /><br>
    File : <mytag:demo parameter="filename" />
  </body>
</html>

上面这些想必你已经很熟悉,我就不做多说了。

2. 内容标签

创建过程和上面大抵相同,只是程序文件和配置内容有些差异。

DemoTag2.java 
package com.mycompany;

import java.io.IOException;
import java.util.Date;

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

public class DemoTag2 extends BodyTagSupport {
 
  public int doStartTag() throws JspTagException {   
    return EVAL_BODY_BUFFERED;
  }
 
  public int doEndTag() throws JspTagException {
    String body = this.getBodyContent().getString();
    HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
   
    body = body.replace("$date", new Date().toString());
    body = body.replace("$filename", request.getServletPath());
   
    try {
      pageContext.getOut().print(body);
    }
    catch (IOException e) {
      throw new JspTagException(e.getMessage());
    }
   
    return SKIP_BODY;
  }
}

我们将新的标签 DemoTag2 加入到上面的标签文件中。

MyTagLib.tld 
<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<tag>
  <name>demo</name>
  <tag-class>com.mycompany.DemoTag</tag-class>
  <body-content>empty</body-content>
  <attribute>
    <name>parameter</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
  </attribute>
</tag>

<tag>
  <name>demo2</name>
  <tag-class>com.mycompany.DemoTag2</tag-class>
  <body-content>jsp</body-content>
</tag>

</taglib>

web.xml 文件无需修改。

看看同时使用两种标签的Test.jsp效果。

Test.jsp 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib uri="/WEB-INF/MyTagLib" prefix="mytag"%>
<html>
  <head>
    <title>My JSP 'Test.jsp' starting page</title>
  </head>

  <body>
    This is my JSP page. <br>
    Date : <mytag:demo parameter="date" /><br>
    File : <mytag:demo parameter="filename" />

    <hr>

    <mytag:demo2>
    Date: $date<br>
    File: $filename
    </mytag:demo2>
  </body>
</html>

至此,两种标签方式都完成。
本文并没有就相关技术细节做出说明,建议您看看Sun有关JSP自定义标签的官方文档。

无论是用自定义标签,还是使用JavaBean,都没有太大的区别,各人或者团队可以根据自己的习惯使用。如果需要在独立类库中封装一些供页面使用的单元,自定义标签应该更适合些。不过现在的IDE环境(MyEclipse)在编写自定义标签的时候可能有些不太舒服的情况,界面开发人员使用JavaBean方式可能更方便些,免得莫名其妙的提示干扰您的工作。
分享到:
评论

相关推荐

    Java自定义标签开发.zip

    Java自定义标签开发是Java服务器页面(JSP)技术中的一种高级特性,它允许开发者创建自己的标签库,以提供更加可重用、可维护和可扩展的代码。本资源包包含的内容涵盖了Java自定义标签的各个方面,从基础概念到实际...

    JAVA自定义标签开发.doc

    JAVA自定义标签开发

    Java自定义标签开发Tag和tld开发

    Java自定义标签开发Tag和tld开发,非常详细的哟

    java自定义标签.......java自定义标签

    学习和使用Java自定义标签,可以帮助开发人员更好地组织JSP页面,提高代码的模块化和重用性。同时,通过阅读提供的压缩包文件,如"初试jsp自定义标签库 - Java编程.htm",可以深入理解自定义标签的创建过程和使用...

    java自定义标签教程

    首先,Java自定义标签是一个Java类,它可以实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个接口定义了标签的生命周期方法,如`doStartTag()`和`doEndTag()`,这些方法在标签的生命周期中被容器调用来执行...

    这是本人做的一个很好的Java自定义标签

    ### Java自定义标签详解 在Java Web开发领域中,自定义标签是一种强大的工具,它可以显著提升页面开发效率,简化代码复杂度。通过自定义标签,开发者可以将常用的、复杂的操作封装起来,使得JSP页面更加简洁易读。...

    java自定义标签、自定义函数、taglib

    在Java Web开发中,自定义标签(Custom Tags)和自定义函数(Custom Functions)是提高代码复用性和可维护性的重要手段。它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务...

    java自定义标签 可运行

    Java自定义标签是Java Web开发中的一个重要特性,它允许开发者创建可重用的代码段,类似于HTML标签,但具有更强大的功能和灵活性。这使得Java Web项目能够实现更高层次的抽象,提高代码的可读性和可维护性,是开发...

    java自定义标签java自定义标签java自定义标签

    总的来说,Java自定义标签是JSP开发中的一个重要部分,它允许开发者创建可重用、模块化的组件,提高了代码的可维护性和复用性。通过理解并熟练掌握自定义标签的创建和使用,可以有效地提升Java Web应用的开发效率和...

    一步一步教你写自己的java自定义标签

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者创建可重用的、定制化的标签库,以提高代码的可读性和可维护性。本教程将逐步指导你如何编写自己的Java自定义标签。 首先,我们需要了解...

    jsp java自定义标签 分页 当前位置 循环遍历数据

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Java自定义标签则是JSP中增强可重用性和模块化的一种方法。本文将深入探讨如何使用Java自定义标签来实现分页功能,当前位置的显示以及数据的...

    java jsp 自定义标签开发

    Java JSP 自定义标签开发是Java Web开发中的一个重要组成部分,它允许开发者扩展JSTL提供的标准标签库,以满足特定的业务需求。JSTL(JavaServer Pages Standard Tag Library)包含四个主要的标签库,分别是核心标签...

    Java自定义标签实例分析

    Java自定义标签允许开发人员创建高度定制的标签库,这些库可以更好地适应特定项目需求,提高代码复用性和可维护性。通过实现或扩展`Tag`、`SimpleTag`以及它们的支持类,开发者能够创建复杂的逻辑和控制流程,使得...

    java web自定义标签的开发与应用

    在李宁老师的《Java Web开发速成宝典》中,这部分内容深入浅出地介绍了如何设计和实现自定义标签,以及如何在实际项目中有效地应用它们。 一、自定义标签的背景与意义 在传统的JSP开发中,我们经常使用JSP内置标签...

    java自定义标签 分页标签 whaosoft 143zh

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者创建可重用的组件,增强页面的可读性和维护性。在Java Web开发中,自定义标签通常用于封装复杂的业务逻辑或者视图展示,比如这里的"分页...

    java 自定义标签 简单实例

    本篇文章将深入探讨Java自定义标签的简单实例,帮助你理解如何在实际开发中应用这一技术。 首先,我们需要了解自定义标签的基本结构和组成。一个自定义标签通常由三部分组成:标签库描述文件(TLD)、标签处理类...

    java自定义分页标签

    首先,我们需要了解Java自定义标签的基础。在Java Servlet规范中,JSP标准标签库(JSTL)提供了许多预定义的标签,但有时这些标签无法满足我们的特定需求。这时,我们可以创建自己的自定义标签库(Tag Library)来...

    java中自定义标签的使用方法

    总结,Java中的自定义标签是JSP技术的重要组成部分,通过定义TLD、编写处理类和在JSP页面中使用,可以实现高度定制化的功能,为Java Web应用程序开发带来灵活性和可扩展性。熟悉和掌握自定义标签的使用,对于提升...

    java自定义标签实例

    本教程将深入探讨Java自定义标签的实现与使用,通过详细的注释和使用文档,帮助你理解和掌握这一技术。 首先,我们需要了解自定义标签的基本结构。自定义标签由三部分组成:标签处理类(Tag Handler Class)、TLD...

Global site tag (gtag.js) - Google Analytics