欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

开发JSP自定义行为

程序员文章站 2022-09-16 10:18:33
开发jsp(SUN企业级应用的首选)自定义行为(标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:off...

开发jsp(SUN企业级应用的首选)自定义行为(标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.  要开发一个自定义行为,需要使用一系列的类和接口,这些类和接口在jsp(SUN企业级应用的首选)1.1规范中被称为标记扩展机制(tag extension mechanism)。实现标记处理程序所需要的所有接口和类都是在javax.servlet.jsp(SUN企业级应用的首选).tagext包中定义的。两个主要的接口分别是TagBodyTag。为了使开发标记处理程序更加容易,API定义了两个起支持作用的类:TagSupportBodyTagSupport。这两个类分别为上面的两个接口提供了默认的实现。

2.  标记库是一个自定义行为的集合。在标记库中除了标记处理程序的类文件以外,标记库里还必须包括一个tld文件。这是一个xml(标准化越来越近了)文件,它把所有的自定义行为的名称映射到相应的标记处理程序类,而且对每一个自定义行为所支持的所有属性进行了描述。类文件和tld可以被打包到一个JAR文件中以方便安装。

3.  开发,配置和使用一个简单的自定义行为通常需要做这几部分工作。

(1)       实现一个标记处理程序类。对这个类进行编译,然后把生成的类文件放到应用程序的WEB-INF/classes目录下。

(2)       创建TLD文件。看下面这个简单的实例。

<?xml(标准化越来越近了) version=”1.0” encoding=”ISO-8859-1” ?>

<!DOCTYPE taglib

  PUBLIC “-//Sun Microsystems, Inc.//DTD jsp(SUN企业级应用的首选) Tag Library 1.1//EN”

  https://java.sun.com/j2ee/dtds/web-jsp(SUN企业级应用的首选)taglibrary_1_1.dtd>

 

<taglib>

 <tlibversion>1.0</tlibversion>

 <jsp(SUN企业级应用的首选)version>1.1</jsp(SUN企业级应用的首选)version>

 <shortname>test</shortname>

 

 <tag>

  <name>hello</name>

  <tagclass>com.mycompany.HelloTag</tagclass>

  <bodycontent>empty</bodycontent>

  <attribute>

<name>name</name>

          </attribute>

         </tag>

        </taglib>

        把这个文件取名为*.tld,并把它放在应用程序的WEB-INF/tlds目录下。

(3)       现在你可以这样在jsp(SUN企业级应用的首选)页面中使用自定义行为。

<%@ taglib uri=”/WEB-INF/tlds/mylib.tld” prefix=”test” %>

<html>

       <body bgcolor=”white”>

              <test:hello name=”maojb”/>

       </body>

</html>

当这个页面被请求时,jsp(SUN企业级应用的首选)容器就使用这个TLD来发现与自定义行为相对应的类。然后它将调用所有相应的方法,将相应的文本加入到应答中去。以上就是在最简单的情况下我们要做的所有事情。

4.  先来看一下最重要的Tag接口的方法:

public void setPageContext(PageContext pageContext);

public int doStartTag() throws jsp(SUN企业级应用的首选)Exception;

public int doEndTag() throws jsp(SUN企业级应用的首选)Exception;

 

然后我们了解一下TagSupport类提供的对这些方法的实现。

Public class TagSupport implements Tag , Serializable {

Protected PageContext pageContext;

        …….

        Public void setPageContext(PageContext pageContext) {