`
liuwang8888
  • 浏览: 18045 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA自定义标签

    博客分类:
  • jsp
 
阅读更多
Test.jsp 


 
    <title>My JSP 'Test.jsp' starting page</title>
    This is my JSP page. <br>
    Date :  <br>
    File : <input value="&lt;%= request.getServletPath() %&gt;">

为了将这个这个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 
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;&lt;taglib&gt;&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;&lt;tag&gt;&lt;name&gt;demo&lt;/name&gt;&lt;tag-class&gt;com.mycompany.DemoTag&lt;/tag-class&gt;&lt;body-content&gt;empty&lt;/body-content&gt;&lt;attribute&gt;&lt;name&gt;parameter&lt;/name&gt;&lt;required&gt;false&lt;/required&gt;&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;&lt;/attribute&gt;&lt;/tag&gt;&lt;/taglib&gt;

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

web.xml 
&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;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"&gt;&lt;jsp-config&gt;&lt;taglib&gt;&lt;taglib-uri&gt;/WEB-INF/MyTagLib&lt;/taglib-uri&gt;&lt;taglib-location&gt;/WEB-INF/MyTagLib.tld&lt;/taglib-location&gt;&lt;/taglib&gt;&lt;/jsp-config&gt;&lt;/web-app&gt;

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

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

Test.jsp 



 
    <title>My JSP 'Test.jsp' starting page</title>
    This is my JSP page. <br>
    Date : &lt;demo parameter="date"&gt;&lt;/demo&gt;<br>
    File : &lt;demo parameter="filename"&gt;&lt;/demo&gt;

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

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 
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;&lt;taglib&gt;&lt;tlib-version&gt;1.0&lt;/tlib-version&gt;&lt;jsp-version&gt;1.2&lt;/jsp-version&gt;&lt;tag&gt;&lt;name&gt;demo&lt;/name&gt;&lt;tag-class&gt;com.mycompany.DemoTag&lt;/tag-class&gt;&lt;body-content&gt;empty&lt;/body-content&gt;&lt;attribute&gt;&lt;name&gt;parameter&lt;/name&gt;&lt;required&gt;false&lt;/required&gt;&lt;rtexprvalue&gt;true&lt;/rtexprvalue&gt;&lt;/attribute&gt;&lt;/tag&gt;&lt;tag&gt;&lt;name&gt;demo2&lt;/name&gt;&lt;tag-class&gt;com.mycompany.DemoTag2&lt;/tag-class&gt;&lt;body-content&gt;jsp&lt;/body-content&gt;&lt;/tag&gt;&lt;/taglib&gt;

web.xml 文件无需修改。

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

Test.jsp 



 
    <title>My JSP 'Test.jsp' starting page</title>
    This is my JSP page. <br>
    Date : &lt;demo parameter="date"&gt;&lt;/demo&gt;<br>
    File : &lt;demo parameter="filename"&gt;&lt;/demo&gt;<hr>&lt;demo2&gt;
    Date: $date&lt;br&gt;
    File: $filename
    &lt;/demo2&gt;

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

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

相关推荐

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

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准标签库,创建自己的定制化标签,以提高代码的可读性和可维护性。自定义标签可以封装复杂的业务逻辑或者视图呈现,使得页面...

    java自定义标签教程

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

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

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准库,创建自己的标签库,以实现特定的功能或者简化代码。这种机制使得开发者能够将业务逻辑封装在标签中,提高代码的可读性...

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

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

    java自定义标签 可运行

    总之,Java自定义标签是Java Web项目中的重要工具,它们通过提供可复用的代码片段,促进了代码的模块化和项目管理的优化。理解并熟练使用自定义标签,对于提升Java Web开发的专业技能大有裨益。

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

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

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

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

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

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

    Java自定义标签实例分析

    Java自定义标签是基于Java类的,这些类实现了`javax.servlet.jsp.tagext.Tag`或`javax.servlet.jsp.tagext.SimpleTag`接口。`Tag`接口是经典且必须实现的接口,它定义了标签生命周期中的一系列方法,如`doStartTag...

    java自定义标签分页

    Java自定义标签是一种扩展JSP页面功能的方式,它允许开发者创建可重用的组件,使得在JSP页面中处理业务逻辑或展现复杂视图变得更加简便。在这个“java自定义标签分页”主题中,我们将深入探讨如何利用自定义标签来...

    java 自定义标签 简单实例

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

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

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

    java自定义标签实例

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

    Java自定义标签开发.zip

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

    Java自定义标签 教程

    Java自定义标签是JSP开发中的一个重要特性,它允许开发者扩展JSP页面的功能,通过创建自己的标签库来封装复杂逻辑或常见操作。本教程将详细讲解如何创建和使用自定义标签。 首先,JSP中的标签库是实现自定义功能的...

    jsp java自定义标签 实现分页 当前位置标签

    在本案例中,"jsp java自定义标签 实现分页 当前位置标签"的标题揭示了我们要探讨的核心内容:如何利用JSP和Java来创建一个自定义标签,这个标签不仅能够处理分页功能,还能显示当前位置信息。下面将详细解释这一...

    JAVA自定义标签例子

    总结来说,Java自定义标签的实现涉及创建TLD文件、编写标签处理器类以及在JSP页面中使用。这种机制使得开发者能够构建自己的函数库,提供定制化的功能,从而提高代码复用性和应用程序的可维护性。在本例中,我们学习...

    java自定义标签的使用.pdf

    以下是对"java自定义标签的使用"的详细解析: 1. **标签处理程序**: 标签处理程序是实现自定义标签功能的核心,它是一个Java对象,负责执行与自定义标签相关的操作。在创建自定义标签前,你需要编写一个标签处理...

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

    Java自定义标签的开发与应用主要涉及到JSP(JavaServer Pages)技术的扩展能力,允许开发者根据特定需求创建自己的标签库。在JSTL(JavaServer Pages Standard Tag Library)提供的核心、国际化、数据库和XML标签库...

    java 自定义标签

    总的来说,Java自定义标签极大地增强了JSP页面的可扩展性和复用性,使得开发者可以创建复杂的功能,同时保持页面设计的简洁和分离。通过熟练掌握自定义标签的开发,可以构建更高效、更易于维护的Web应用程序。

Global site tag (gtag.js) - Google Analytics