index.jsp
<%@ page language="java" contentType="text/html;charset=gb2312"%>
//uri属性定义了唯一的标签库描述(以下简称TLD),它可以是直接是tld文件名或一个独一无二的名字。prefix是用来区别其它TLD中和本TLD中有重名的tag的一种手段。相当起了一个别名。
<%@ taglib uri="http://xie.tld" prefix="mes" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1><mes:example/></h1>
</body>
</html>
Mes.java
package mesTag;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
public class Mes extends TagSupport {
public int doStartTag(){
try{
//目的是处理后在页面显示“自定义标签”
JspWriter out=pageContext.getOut();
out.println("自定义标签");
}
catch(IOException e){
System.out.println("e");
}
//SKIP_PAGE指明servlet应忽视后面标签体。
return (SKIP_BODY);
}
}
xie.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>ex-out</short-name>
<tag>
<name>example</name> 当页面有example这个元素时tld文件会找到mesTag包下的Mes类进行处理
<tag-class>mesTag.Mes</tag-class>
</tag>
</taglib>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<jsp-config>
<taglib>
<taglib-uri>http://xie.tld</taglib-uri> 配置http://xie.tld到>/WEB-INF/xie.tld的映射,在index.jsp 页面引入
<taglib-location>/WEB-INF/xie.tld</taglib-location>
</taglib>
</jsp-config>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
类为标识句柄类:用来定义在解析此标识时,所执行的服务器端的工作。
tld文件为标识描述文件:用来描述标识实现所需要的一些属性。
web文件用来关联tld文件uri形式和tld存放的位置、
jsp文件来引用标识。
实现一个标记处理程序类。对这个类进行编译,然后把生成的类文件放到应用程序的WEB-INF/classes目录下。
创建TLD文件把这个文件取名为*.tld,并把它放在应用程序的WEB-INF/tlds目录下
配置web
jsp应用它
运行原理说明:当index这个页面被请求时,JSP容器就使用这个TLD来发现与自定义行为相对应的类然后它将调用所有相应的方法。
上面代码是在 eclipse+tomcat 下编写的