`

学习自定义标签----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进行配置.

分享到:
评论

相关推荐

    利用BodyTagSupport创建带标签体的自定义标签

    利用BodyTagSupport创建带标签体的自定义标签

    struts2自定义标签案例详解

    这里在实现自定义标签时,继承的2个类分别是org.apache.struts2.views.jsp.ComponentTagSupport和org.apache.struts2.components.Component,ComponentTagSupport实际上是对BodyTagSupport的一次封装,看一下...

    自定义标签

    通过extends BodyTagSupport实现自定义标签的代码实例;通过implements Tag实现自定义标签的代码实例

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

    通过BodyTagSupport实现了自定义的标签,主要实现功能为分页技术以及当前功能点所在位置。

    jsp自定义标签中的困扰

    JSP自定义标签过程中会出现许多的问题,尤其是没有相应课题的专门书籍的时候.我在通过继承BodyTagSupport类来做标签的时候。出现了许多问题,我把这些问题归纳起来,希望能帮助到某些人。

    JSP自定义标签案例分析

    本文为大家介绍了JSP自定义标签的案例,供大家参考,具体内容如下 案例一:实现一个基本防盗链标签 1. 标签处理类 public class MyReferer extends BodyTagSupport { private String site; private String back; ...

    jsp通过自定义标签库实现数据列表显示的方法

    本文实例讲述了jsp通过自定义标签库实现数据列表显示的方法。分享给大家供大家参考,具体如下: 1. 定义标签库类 UserListTag.java package com.yanek.cms.tag; import java.io.IOException; import java.util....

    在jsp中使用自定义taglib

    一个tag就是一个普通的java类,它唯一特别之处是它必须继承TagSupport或者BodyTagSupport类。这两个类提供了一些方法,负责jsp页面和你编写的类之间的交互,例如输入,输出。而这两个类是由jsp容器提供的,无须开发...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 ...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 12.9、...

    李兴华Java Web开发实战经典(高清版) Part2

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 ...

    java web 视频、电子书、源码(李兴华老师出版)

    12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5、定义有标签体的标签库 12.6、开发迭代标签 12.7、BodyTagSupport类 12.8、TagExtraInfo类和VariableInfo类 ...

    可伪可不伪的分页标签

    import javax.servlet.jsp.tagext.BodyTagSupport; public class FenyeTag extends BodyTagSupport { private static final long serialVersionUID = 1L; private String html; private String exname; ...

    javax.servlet.jsp.tagext源码

    TagSupport SimpleTagSupport tagext javax servlet jsp Tag 标签

    JSP/Servlet

    BodyTagSupport 類別 自訂標籤屬性 自訂動態標籤屬性 SimpleTagSupport 類別() Scripting Variable Tag File Tag File是從JSP 2.0開始新增的功能,主要的目的是讓撰寫JSP網頁的網頁設計人員即使在不懂Java...

Global site tag (gtag.js) - Google Analytics