JSP自定义标签(一)

标记扩展基础

 

    自定义行为实际上是一个自定义行为的标记处理器(tag handler)类,它从本质上来讲是一个bean。标记处理器必须实现由JSP规范定义的三个java接口中的一个。

实现标记处理器的所需要的接口和类都在javax.servlet.jsp.tagext程序包中。三个主要接口分别是:

1         Tag 接口定义了你在任何标记处理行为中都需要实现的方法。

2         IterationTag 接口扩展了Tag接口,并增加了行为元素的行为体上迭代所需要的方法。

3         BodyTag 接口扩展了IterationTag接口,并增加了用于访问行为元素的行为体的方法。

 

为了使开发标记更加容易,API定义了两个器支持作用的类:

1         TagSupport 类为TagIterationTag接口中的方法提供了默认的实现。

2         BodyTagSupport 类为BodyTag接口中的方法提供了默认的实现。

 

标记库是一个自定义行为的集合。自定义的所有标记一般都打包成一个标记库,处理标

记处理的类文件以外,标记库还必须包括一个TLD文件,它把所有自定义行为的名称都映射到相应的标记处理器类中。类文件和TLD可以打包到一个JAR文件中以方便安装。

 

一个简单的例子:

 

标记类 myFristTag

package com.Tag.Form;

 

import java.io.IOException;

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.TagSupport;

 

public class myFristTag extends TagSupport {

   

    private String name = "Honglei Lee";

 

    public void setName(String name) {

       this.name = name;

    }

   

    public int doEndTag() throws JspException {

       try {

           pageContext.getOut().write(" Hello "+name);

       } catch (IOException ex) {}

       return EVAL_PAGE;

    }

   

 

}

 

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.0</tlib-version>

    <jsp-version>1.2</jsp-version>

    <short-name>cctd</short-name>

    <uri>cctd-form</uri>

    <tag>

       <name>HelloMr</name>

       <tag-class>com.Tag.Form.myFristTag</tag-class>

       <body-content>empty</body-content>

       <attribute>  

              <name>name</name>  

          </attribute>

    </tag>

</taglib>

 

JSP 调用文件

<%@ taglib prefix="cctd" uri="cctd-form"%>

<html>

  <body>

     <cctd:HelloMr name="Honglei Lee"/>

  </body>

</html>

 

 

 

此例子在浏览器显示   Hello Honglei Lee

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值