`

简介开发JSP2的自定义标签

阅读更多

jsp自定义标签可以完成jsp脚本的功能,所以可以取代丑陋的JSP脚本。

在JSP2中开发标签库只需要一下3步:

 

  1. 开发自定义标签处理类(继承自javax.servlet.jsp.tagext.SimpleTagSupport);
  2. 建立一个*.tld(Tag library definition)文件(也称标签库定义文件);
  3. 在JSP文件中使用自定义标签。

下面就上面的每一步进行详细介绍。

 

一、开发自定义标签类

我们在jsp页面中使用的再简单的标签,其实质上都是由标签处理类提供实现的。

自定义标签类都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport 。除此之外,对应自定义标签类还有2个要求:

 

  1. 如果标签类包含属性,每个属性都应该提供对应的getter和setter方法;
  2. 需要重写doTag()方法,这个方法负责生成页面内容。

下面开发一个最简单的自定义标签,该标签负责在页面上输出HelloWorld:

 

package com.user.defined.jstl;

import javax.servlet.jsp.tagext.*;

import javax.servlet.jsp.*;

import java.io.*;

//开发一个最简单的自定义标签,该标签负责在页面上输出HelloWorld

public class HelloWorldTag extends SimpleTagSupport

{

    //重写doTag方法,该方法在标签结束生成页面内容

    public void doTag()throws JspException,IOException

    {

       //获取页面输出流,并输出字符串

       getJspContext().getOut().write("Hello World");

    }

}

 

二、建立TLD文件

每个tld文件对一个标签库,一个标签库中可以含有多个标签。tld文件也称为标签库定义文件。

标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义了一个标签。在tomcat6安装目录下的webapps\examples\WEB-INF\jsp2\jsp2-example-taglib.tld,在jsp2-example-taglib.tld示范用的标签库文件上进行修改即可。

 

新建一个名为mytaglib.tld的文件,并将其放在WEB-INF/路径,或是WEB-INF的任意子路径下。

 

<?xml version="1.0" encoding="UTF-8"?>

<taglib 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 web-jsptaglibrary_2_0.xsd"

    version="2.0">

    <tlib-version>1.0</tlib-version>

    <short-name>mytaglib</short-name>

    <!-- 定义该标签库的URI -->

    <uri>http://www.xkh5566.iteye.com/mytaglib</uri>

 

    <!-- 定义第一个标签 -->

    <tag>

       <!-- 定义标签名 -->

       <name>helloWorld</name>

       <!-- 定义标签处理类 -->

       <tag-class>com.user.defined.jstl.HelloWorldTag</tag-class>

       <!-- 定义标签体为空 -->

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

    </tag>

</taglib>

 

三、使用标签库

使用标签库分成2个步骤:

  1. 导入标签库:使用taglib编译指令导入标签库,就是将标签库和指定前缀关联起来;
  2. 使用标签:在JSP页面中使用自定义的标签。

taglib 的语法格式:

<%@ taglib uri="taglibUri" prefix="tagPrefix"%>

 

使用标签的语法格式:

<tagPrefix:tagName tagAttrubute="tagValue" ...>

<tagBody/>

</tagPrefix:tagName>

 

新建一个helloWorldTag.jsp

<%@ page contentType="text/html; charset=UTF-8"%>

<!-- 导入标签库,指定mytag前缀的标签,

    http://www.xkh5566.iteye.com/mytaglib的标签库处理 -->

<%@ taglib uri="http://www.xkh5566.iteye.com/mytaglib" prefix="mytag"%>

<html>

    <head>

       <title>自定义标签示范</title>

    </head>

    <body bgcolor="#ffffc0">

       <h2>

           下面显示的是自定义标签中的内容

       </h2>

       <!-- 使用标签 ,其中mytag是标签前缀,根据taglib的编译指令,

           mytag前缀将由http://www.xkh5566.iteye.com/mytaglib的标签库处理

       -->

       <mytag:helloWorld />

       <BR>

    </body>

</html>

 浏览helloWorldTag.jsp可以看到在页面中输出了Hello World的字符串。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics