qianbao

文采有限,写不出系统的文章....所以只能记录一些小小的知识点
没有真正的捷径能绕过黑暗直达黎明..

JSP 自定义标签(转载)



定义一个叫<hello>的标签

当这个标签被调用时会在页面显示Hello World

首先写个类Hello.java

packeage com.test.hello;

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

public class Hello extends TagSupport
{

public int doStartTag()
{
   try
   {
    JspWriter out = pageContext.getOut();
    out.println("Hello World Use Tag Library");
   }
   catch (Exception e)
   {
    System.out.println("Hello Tag Error :" + e);
   }
   return (SKIP_BODY);
}
}

定义新的标签时要先定义一个java类。即标签处理类,它会告诉Container遇到自定义标签时要执行那些操作。

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
这是每次制作标签时必须引入的套件。

在TagSupport类中,定义好doStartTag()这个方法。doStartTag()主要是不Container遇到所定义的标签时它会依doStartTag()方法中的内容处理。
此标签主要是显示字符串,所以首先要利用pageContext.getOut()来取得JspWriter,然后才能将字符串显示到网页上。程式执行完后一定要返回一个值,
这个程式中我回传了一个SKIP_BODY的值,SKIP_BODY的意思是告诉Container不需要对本体内容(body content)做处理。

<标签开始>本体内容</标签结束>

因为现在定义的Hello标签是空元素标签,因此没有所谓的本体内容,所以要回传SKIP_BODY的值。

Hello.java编译后,会产生{工程}\WEB-INF\classes\com\test\hello\Hello.class


然后定义TLD,一般会是{工程}\WEB-INF\tlds\ 这个目录下。比如现在的tld叫HelloTest.tld

HelloTest.tld

<?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">
    
     <description>My Taglib by JavaWorld.com.tw</description>
     <tlib-version>1.0</tlib-version>
     <jsp-version>2.0</jsp-version>
     <short-name>HelloTest</short-name>
     <uri></uri>
     <small-icon></small-icon>
    
     <tag>
       <description>Example:Hello</description>
       <name>Hello</name>
       <tag-class>com.test.Hello</tag-class>
       <body-content>empty</body-content>
     </tag>
    
</taglib>

之后便是JSP了。
Hello.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tlds/HelloTest.tld" prefix="TestTag" %>

<html>
<head>
   <title>标签测试</title>
</head>
<body>

<h1><TestTag:Hello /></h1>

</body>
</html>

posted on 2008-02-25 15:52 qianbao 阅读(40) 评论(0)  编辑 收藏 所属分类: JAVA


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: