jsp自定义标签的使用以及tld文件配置总结

第一步:在WEB-INF目录下(即与web.xml同级目录)添加名为"my.tld"的文件,文件名可任意取,内容如下


http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

 1.0

 1.2

 MyTag

 http://www.com.cn/tag/my

 My Framework JSP Tag Library.

 
  message
  com.ntong.tag.MessageTag
  empty
  
   key
   true
  

  
   nameSpace
  

 
 
 
 
     testTag
     com.ntong.tag.testTag
     test
    
         forward
         true
         true
        
                                    tag shuoming
                 ]]>
        

    

    
          canshu
          true
          true
         
                                 can shu shuo ming
                    ]]>
         

    

    
 


 

 

第二步:在web.xml文件中添加如下代码


  http://www.com.cn/tag/my
  /WEB-INF/my.tld

 


 

第三步:编写my.tld文件的标签类,该tld文件中自定义了2个标签,因此对应有两个标签类

第一个java实现类代码如下

package com.ntong.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * 可继承BodyTagSupport
 * 重载BodyTagSupport类的方法
 * 编写标签对应的实现类时,需要重载BodyTagSupport类的几个方法:doStartTag(),setBodyContent(),doInitBody(),doAfterBody(),doEndTag()
 * 执行顺序:doStart(),doInitBody(),setBodyContent(),doAfterBody(),doEndTag
 * @author Administrator
 * 该类直接继承TagSupport
 *
 */

public class testTag extends TagSupport {

 public String a;
 public String b;

 //重载doStartTag方法
 public int doStartTag() throws JspException {
  System.out.println("doStartTag执行");
  return 0;
 }

 //重载doEndTag方法
 public int doEndTag() throws JspException {
  System.out.println("doEndTag执行");
  return 6;
 }

 //重载doAfterBody方法
 public int doAfterBody() throws JspException {
  System.out.println("doAfterBody执行");
  return 0;
 }

 public testTag() {
  System.out.println("testTag实例化");
 }

 public void setCanshu(String a) {
  System.out.println("canshu标签输入的值为:" + a);
  this.a = a;
 }

 public void setForward(String b) {
  System.out.println("forward标签的值为:" + b);
  this.b = b;
 }

}

 

第二个java实现类代码如下

package com.ntong.tag;

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

public class MessageTag extends TagSupport
{

    public MessageTag()
    {
     System.out.println("MessageTag的实例化了");
    }

    public int doEndTag()
        throws JspException
    {
        return 6;
    }

    public String getNameSpace()
    {
        return a;
    }

    public void setNameSpace(String s)
    {
        a = s;
    }

    public Object getKey()
    {
        return _fldif;
    }

    public void setKey(Object obj)
    {
     System.out.println("set++++" + obj);
        _fldif = obj;
    }

    private Object _fldif;
    private String a;
}

 

第四步:到这里自定义标签已经OK了,接下来就是在jsp页面中使用自定义的标签

首先在jsp页面引入tag标签(将下面的代码放入jsp页面的最顶端)

<%@ taglib prefix="my" uri="http://www.com.cn/tag/my" %>

然后在body中就可以使用定义好的标签了,代码如下


http://localhost:8080
" canshu="post">

 

第五步:启动web服务器(如tomcat),访问第四步中的jsp页面,控制台将会输出如下内容,说明我们自定义的标签成功了

MessageTag的实例化了
set++++setk
testTag实例化
forward标签的值为:http://localhost:8080
canshu标签输入的值为:post
doStartTag执行
doEndTag执行

 

提示:蓝色字体为项目中需添加的代码,红色字体为控制台的打印内容,黑色字体为步骤描述

 


 

 

 

你可能感兴趣的:(java)