jsp_tag 学习笔记

原创 2007年09月14日 02:09:00

   学习地址:http://java.sun.com/developer/technicalArticles/xml/WebAppDev3/ 

最近要开发java的CMS 系统 只好逼着自己学了,很重要的一部分是自定义标签。研究了一下,还不算太难。

总述:包括 Bodyless Tags 和 Tags with a Body。

1. Develop the Tag Handler

Sample 1: Tag.java

public interface Tag {
   public final static int SKIP_BODY = 0;
   public final static int EVAL_BODY_INCLUDE = 1;
   public final static int SKIP_PAGE = 5;
   public final static int EVAL_PAGE = 6;

   void setPageContext(PageContext pageContext);
   void setParent(Tag parent);
   Tag getParent();
   int doStartTag() throws JspException;
   int doEndTag() throws JspException;
   void release();
}

实现接口或者继承一个已有的类TagSupport,

Sample 2: HelloTag.java

package tags;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HelloTag implements Tag {
   private PageContext pageContext;
   private Tag parent;

   public HelloTag() {
      super();
   }

   public int doStartTag() throws JspException {
      try {
         pageContext.getOut().print(
         "This is my first tag!");
      } catch (IOException ioe) {
         throw new JspException("Error: 
         IOException while writing to client" 
         + ioe.getMessage());
      }
      return SKIP_BODY;
   }

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

   public void release() {
   }

   public void setPageContext(PageContext 
   pageContext) {
      this.pageContext = pageContext;
   }

   public void setParent(Tag parent) {
      this.parent = parent;
   }

   public Tag getParent() {
      return parent;
   }
}

2. Create a Tag Library Descriptor

Sample 3: mytaglib.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//
        DTD JSP Tag Library 1.1//EN"
        "http://java.sun.com/j2ee/dtds/
        web-jsptaglibrary_1_1.dtd">

<!-- a tag library descriptor -->

<taglib>
   <tlibversion>1.0</tlibversion>
   <jspversion>1.1</jspversion>
   <shortname>first</shortname>
   <uri></uri>
   <info>A simple tab library for the 
   examples</info>

  <tag>
    <name>hello</name>
    <tagclass>tags.HelloTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>Say Hi</info>
  </tag>         
</taglib>

3. Test the Tag

The final step is to test the tag we have developed. In order to use the tag, we have to reference it, and this can be done in three ways:

  1. Reference the tag library descriptor of an unpacked tag library. For example:

     

    <@ taglib uri="/WEB-INF/jsp/mytaglib.tld" 
    prefix="first" %>
    

     

  2. Reference a JAR file containing a tag library. For example:

     

    <@ taglib uri="/WEB-INF/myJARfile.jar" 
    prefix='first" %>
    

     

  3. Define a reference to the tag library descriptor from the web-application descriptor (web.xml) and define a short name to reference the tag library from the JSP. To do this, open the file: c:/tomcat/webapps/examples/web-inf/web.xml and add the following lines before the end line, which is <web-app>:

        <taglib>
           <taglib-uri>mytags</taglib-uri>
           <taglib-location>/WEB-INF/jsp/
           mytaglib.tld</taglib-location>
        </taglib>
    

Now, write a JSP and use the first syntax. Sample 4 shows an example:

Sample 4: Hello.jsp

<%@ taglib uri="/WEB-INF/jsp/mytaglib.tld"
 prefix="first" %>
<HTML>
<HEAD>
<TITLE>Hello Tag</TITLE>
</HEAD>

<BODY bgcolor="#ffffcc">

<B>My first tag prints</B>:

<first:hello/>

</BODY>
</HTML>
先写这么多了 具体的看教程

2017/10/21 学习笔记

学习自http://www.cnblogs.com/samchen2009/p/3364327.html,虽然是13年的文章,但是总结的真的非常棒。 关于GUI系统: GUI组成部分:Acti...
  • z976506748
  • z976506748
  • 2017年10月21日 16:21
  • 229

2018.1月学习笔记

一.AndroidAnotaion的使用 1.project-->build.gradle-->buildscript-->dependencies内 classpath 'com.android...
  • m0_37840695
  • m0_37840695
  • 2018年01月11日 14:33
  • 88

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 944

Linux内核学习笔记

进程管理 1.1. 进程1.2. 进程描述符1.3. 进程的状态1.4. 线程描述符1.5. 内核中双向列表的实现1.6. 进程的标识和定位1.7. 进程组织 1.7.1. 等待队列1.7...
  • king16304
  • king16304
  • 2016年08月15日 15:18
  • 296

模板和学习笔记

-----------------------------------点分治一般步骤:1.找到树的重心(避免当树退化成链时复杂度升高)2.从重心出发分治统计路径分治过程:统计当前节点子树中的符合条件的...
  • qq_35878547
  • qq_35878547
  • 2017年07月10日 17:37
  • 224

记《learning hard C#学习笔记》 书中一个错误

以前学过c# 但是不够系统 最近读了一本《learning hard C#学习笔记》 系统的学习一下 读到50页 发现一个问题,这本书用的单例有问题  主要问题: 1 首先public stati...
  • w605283073
  • w605283073
  • 2016年05月03日 15:59
  • 815

个人学习笔记开篇

大学毕业到现在已经工作了半年时间了,虽然一直在为公司的编辑器一刻不停的做功能,不过真正学习到的知识貌似没多少,倒发现了自己一身的缺点。知识体系了解的不够深刻,基础不够扎实,做事比较粗心。为了能在之后的...
  • jhgameboy
  • jhgameboy
  • 2014年01月30日 00:44
  • 1012

Learning hard C#学习笔记

委托: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac...
  • husheng0
  • husheng0
  • 2016年04月25日 02:55
  • 1790

2017年7月-学习笔记

本学习笔记主要记录了我对tcp/ip卷1这本书的学习心得,主要看的电子版的数目,本文中图片如无特别说明,均来自,[张防涛-简书]当中tcp/ip详解的文章。作者:张芳涛 链接:http://www....
  • Kang_TJU
  • Kang_TJU
  • 2017年07月17日 10:29
  • 538

Maven学习笔记(三) :Maven使用入门

编写POM:      Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。     ...
  • Troy__
  • Troy__
  • 2014年08月26日 18:43
  • 3171
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsp_tag 学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)