`

学习自定义标签----BodyTagSupport(转)

 
阅读更多

     这几天学习了一下自定义标签.很有意思的东东.

    在我看来呀,写一个自定义标签可以分为三步:1:先写一个处理这个标签的JAVA类,我认为这个应该是最重要的,你首先明白你要做的是什么,那么你就要先写这个JAVA类.2:进行编写这个标签的描述文件.3:验证,这一步要编写一个JSP网页来验证你所写的TAG.下面我们用一个实例来告诉大家.

    (其实我也是刚刚开始学习的,只是认为这样可以而已,呵呵)

目的:我们写一个在我们的JSP页面上输出一些String的标签,这个标签有二个属性:name 和count,其中count是为了控制要显示的条数的,显示的内容由标签体和name共同决定.这个标签还会对它的标签体进行处理.

第一步:写一个JAVA类     叫:InfoTagSupport

     package com.terence.zhaody;
import java.io.IOException;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
//BodyTagSupporte 有一个 bodyContent的成员变量,类型是BodyContent.通过它可以得到很多东西
//-----getEnclosingWriter---用来返回一个JspWriter对象
//-----getReader-----用来返回一个Reader对象
//-----getString----用来返回整个标签体的字符串.
//-----clearBody----清空标签体的处理的结果
public class InfoTagSupport extends BodyTagSupport{
/**
   *
   */
private static final long serialVersionUID = 1L;
String userName;
int count;
public InfoTagSupport()
{
   super();
}
public void setUserName(String userName)
{
   this.userName=userName;
}
public void setCount(int count)
{
   this.count=count;
}
public int doStartTag()throws JspTagException
{
   System.out.print("in dostarttag");
   if(count>0)
   {
    return EVAL_BODY_TAG;
   }
   else{
    return SKIP_BODY;
   }
}


//doAfterBody   这个方法每次执行完标签体都会执行.若返回的是SKIP_BODY 则表示没有标签体要处理了
//若返回的是EVAL_BODY_TAG则表示这个标签休被 在次处理了,并调用下一次的soAfterTag
public int doAfterBody()throws JspTagException
{
   if(count-->=1)
   {
    try
    {
     JspWriter out=bodyContent.getEnclosingWriter();
     out.print(bodyContent.getString()+userName);
     out.print("<br>");
    }catch(IOException e)
    {
     e.printStackTrace();
    }
    return EVAL_BODY_TAG;
   }
   else
   {
    return SKIP_BODY;
   }
}
public int doEndTag()throws JspTagException
{
   return EVAL_PAGE;
}
}

 

 

第二步:编写描述文件:mytag.tld

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC
"-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.1</tlib-version>
<jsp-version>1.2</jsp-version>
<description>It is just a test</description>
<short-name>mytag</short-name>
<tag>
   <name>info</name>
   <tag-class>com.terence.InfoTagSupport</tag-class>
   <body-content>jsp</body-content>
   <attribute>
    <name>userName</name>
    <required>true</required>
   </attribute>
   <attribute>
    <name>count</name>
    <required>true</required>
   </attribute>
</tag>
</taglib>
第三步:可以写的一个JSP页面来验证一下,当然还要对web.xml进行配置.

分享到:
评论

相关推荐

    自定义标签学习笔记

    ### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...

    JSP自定义标签学习笔记

    本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际应用。 一、概述 1.1 使用简单标签机制 JSP自定义标签提供了类似HTML标签的语法结构,通过自定义标签,开发者可以封装复杂的Java代码,使得页面...

    JSP自定义标签动态属性支持

    通过学习和实践这一技术,开发者可以更好地利用JSP自定义标签的灵活性,提高Web应用的开发效率和质量。同时,了解源码和工具的运用也是提升编程技能的关键,这能帮助我们深入理解底层机制,从而编写出更加高效和可靠...

    参考自定义标签的例子

    通过研究这些文件,你可以理解自定义标签的工作原理,并学习如何在自己的项目中应用它们。 总的来说,自定义标签是JSP中一种非常实用的技术,它允许开发者将复杂的页面逻辑封装起来,提高了代码的可重用性和可维护...

    jsp自定义标签中的困扰

    通过深入学习JSP自定义标签的生命周期和`BodyTagSupport`类提供的方法,开发者能够更好地理解和解决问题,从而编写出高效、可靠的自定义标签。如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各...

    jsp自定义标签开发手册

    总结,JSP自定义标签是提升JSP应用质量的关键技术,通过学习和实践,开发者可以构建出高效、可扩展的Web应用程序。本手册旨在帮助开发者深入理解自定义标签的开发过程,通过实例解析各个步骤,以便于快速上手和应用...

    jsp 自定义标签

    通过阅读源码,我们可以深入理解自定义标签的工作原理,学习如何处理各种标签属性、如何与页面上下文交互、以及如何正确释放资源等。 ### 7. 总结 JSP自定义标签是提高JSP代码可读性和复用性的有效手段。通过创建和...

    JSP自定义标签基础知识学习

    JSP自定义标签是一种扩展JSP表达式语言和标准标签库的机制,允许开发者创建自己的标签,以简化页面代码和提高代码重用性。自定义标签的创建和使用是JSP开发中一项重要的技能,尤其在需要封装特定业务逻辑或流程时...

    JSP自定义标签案例分析

    首先,创建一个标签处理类,该类继承自BodyTagSupport,这是自定义标签的处理类,可以重写其中的方法来实现具体的逻辑。例如,在这个案例中,重写了doEndTag()方法,该方法在标签体结束时执行。处理类MyReferer中...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx

    Java Web开发是构建基于Web的应用程序的关键技术,涵盖了多种组件和技术,如Servlets、JSP、过滤器、监听器和自定义标签等。本篇主要关注的是Java Web开发中的过滤器、监听器和自定义标签。 1. **过滤器(Filter)*...

    Notes On User Taglib

    在学习JSP自定义标签库(User Taglib)的过程中,我们常常会遇到各种设计和实现的问题。本笔记将概述在创建自定义标签时的关键点,包括标签支持类、TLD文件中的类型定义、数据传递方法以及标签之间的通信方式。 1. ...

    良葛格JspServlet学习笔记.pdf

    - **自定义标签属性**:讲解如何为自定义标签添加属性。 - **自定义动态标签属性**:介绍如何创建动态属性。 - **SimpleTagSupport 类别**:用于创建无体内容的简单标签。 - **ScriptingVariable**:允许在JSP...

    JSP2.0技术手册 JSP2.0技术手册

    4. **自定义标签的增强**:通过提供`TagSupport`和`BodyTagSupport`等类,开发者可以更轻松地创建自定义标签,这些标签可以更好地集成到EL和JSTL中。 5. **分离的Java源文件**:JSP2.0允许将JSP页面编译为单独的...

Global site tag (gtag.js) - Google Analytics