想飞就别怕摔

大爷的并TM骂人

简单的标签编程【学习笔记】

创建和使用一个Tag Library的基本步骤

1、创建标签的处理类(Tag Handler Class)
2、创建标签库描述文件(Tag Library Descrptor File)
3、在web.xml文件中配置元素
4、在JSP文件中引人标签库


标签库程序应该有一下几部分组成
    标签的具体实现文件(*.java)
    标签的描述文件(*.tld)
   如果需要可以在web.xml中进行配置
    在jsp中通过标签进行自定义标签的调用
*.tld文件是标签的描述文件,此文件对标签库的运行起决定性作用。*.tld文件也是一个XML文件,如果是使用XML,则需要DTD、SCHEMA支持。

标签库的接口和类的继承关系:
JsTag<interface>←←SimpleTag<interface>←←SimpleTagSupport<class>
JsTag<interface>←←Tag<interface>←←Iterater Tag<interface>←←TagSupport<class>←←BodyTagSupport<class>

几种典型的标签:

    不带属性和主体的简单标签:<mytaglibs:SomeTag/>
    有属性没有主体的标签:   <mytaglibs:SomeTag user="hellking"/>
    带有主体和属性的标签:   <mytaglibs:SomeTag user="hellking"/>主体部分可以是jsp内容或标签</mytaglibs:SomeTag>

 传统的标签的生命周期:

    1.setPageContext:当容器创建一个新的标签后,通过setPageContext来设置标签页面的上下文;
    2.setParent:使用setParent方法设置一个标签的上一级标签,如果没有上一级,设为NULL;
    3.setAttribute:设置标签的属性,这个属性在标签描述文件中定义,如果没有定义属性,则不用调用此方法;
    4.doStartTag():调用doStartTag()方法,当返回EVAL_BODY_INCLUDE时,就计算body,返回SKIP_BODY反之;
    5.doEndTag():调用doEndTag()方法,当返回EVAL_PAGE时,容器将在标签结束时继续计算JSP的其他部分,SKIP_PAGE反之;
    6.release():调用release()方法释放标签程序占用的任何资源。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 3                         "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
 4 <taglib>
 5  <tlib-version>1.0</tlib-version>
 6  <jsp-version>2.0</jsp-version>
 7  <short-name>hello</short-name>
 8  <tag>
 9   <name>shan</name>
10   <tag-class>org.zzn.demo01.Hello</tag-class>
11   <body-content>empty</body-content>
12  </tag>
13 </taglib>
建立Java文件代码:
 1 package org.zzn.demo01;
 2 import java.io.IOException;
 3 import javax.servlet.jsp.JspException;
 4 import javax.servlet.jsp.JspWriter;
 5 import javax.servlet.jsp.tagext.TagSupport;
 6 
 7 public class Hello extends TagSupport {
 8     @Override
 9     public int doStartTag() throws JspException {
10         //向jsp页面中打印“蜘蛛侠”字符串
11         String str = "蜘蛛侠";
12         JspWriter out = pageContext.getOut();
13         try {
14             out.println(str);
15         } catch (IOException e) {
16             // TODO Auto-generated catch block
17             e.printStackTrace();
18         }
19         return TagSupport.SKIP_BODY;
20     }
21 }
22 

建立jsp文件代码:
 1 <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
 2 <%@ taglib uri="/WEB-INF/hello.tld" prefix="zzn"%>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>My JSP 'Hello.jsp' starting page</title>
 7   </head>
 8   <body>
 9       <h2><zzn:shan/></h2>
10   </body>
11 </html>

posted on 2008-12-29 13:09 生命的绽放 阅读(238) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(5)

随笔分类(94)

随笔档案(93)

文章分类(5)

文章档案(5)

相册

JAVA之桥

SQL之音

兄弟之窗

常用工具下载

积分与排名

最新评论

阅读排行榜