第一个Taglib

实现第一个Taglib,使用JSPTag接口的子接口Tag实现一个无body体的taglib,

1.       编写一个类实现Tag接口

package com.lecky;

import javax.servlet.jsp.tagext.Tag;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.JspException;

import java.io.IOException;

 

/**

 * <p>Title: taglib</p>

 *

 * <p>继承tag,实现其方法构建tag </p>

 *

 * <p>Copyright: Copyright (c) 2006</p>

 *

 * <p>Company: accp</p>

 *

 * @author lecky.lee

 * @version 1.0

 */

public class FirstTag  implements  Tag{

   

    private PageContext pageContext;

    public FirstTag() {

 

    }

   

    //设置上下文

    public void setPageContext(PageContext pc) {

        this.pageContext=pc;

        try {

            this.pageContext.getOut().println("setPageContext");

        } catch (IOException ex) {

        }

    }

    //设置父标签

    public void setParent(Tag t) {

    }

    //得到父标签

    public Tag getParent() {

        return null;

    }

    //标签开始时执行

    public int doStartTag()  {

        try {

            this.pageContext.getOut().println("lecky");

        } catch (IOException ex) {

        }

        return this.SKIP_BODY;

    }

    //标签结束时执行

    public int doEndTag() throws JspException {

        try {

            this.pageContext.getOut().println("end");

        } catch (IOException ex) {

        }

        return this.EVAL_PAGE;

    }

    //标签资源释放时执行

    public void release() {

        try {

            this.pageContext.getOut().println("release");

        } catch (IOException ex) {

        }

 

 

    }

}

2.       书写一个tld,定义标签库,此示例为myTag.tld文件,路径为/WEB-INF/:

<?xml version="1.0" encoding="GB2312"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd">

 

<taglib>

  <!--

  此标签在之后的版本中替换为<tlib-version> ,<jsp-version>

  -->

  <tlibversion>1.0</tlibversion>

  <jspversion>1.2</jspversion>

  <shortname>frist</shortname>

  <!--shortname将对应调用此标签JSPprefix前缀,但此规则并未严格执行-->

  <uri>/myFirstTag</uri>

  <!--uri也可以不被指定,web.xml中也可以不必声明,jsp中的uri直接使用此tld的相对路径或者直接声明为网址-->

  <tag>

    <name>firstTag</name>

    <tagclass>com.lecky.FirstTag</tagclass>

    <bodycontent>empty</bodycontent>

    <!--bodycontent代表是否支持标签body,不支持为empty,支持为jsp-->

  </tag>

</taglib>

 

3.       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" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

  <display-name>WebModule1</display-name>

<taglib>

  <taglib-uri>/myFirstTag</taglib-uri>

  <taglib-location>/WEB-INF/myTag.tld</taglib-location>

  </taglib>

</web-app>

4.       Jsp文件中调用此标签

<%@ page contentType="text/html; charset=GB2312" %>

<%@ taglib uri="/myFirstTag" prefix="frist"%>

 

<html>

<head>

<title>

tag

</title>

</head>

<body bgcolor="#ffffff">

<h1>

<frist:firstTag/>

</h1>

 

</body>

</html>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值