一个简单的标签:helloTag
本实例将实现调用标签在
JSP面中输出红色的字符:“hello!”。
说明:本章的所有实例均放于
Web应用mytags中。
(1)第一步:开发标签实现类。
helloTag.java
package hello;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class helloTag extends TagSupport {
//----标签开始时调用此方法-------
public int doStartTag(){
try{
JspWriter out=pageContext.getOut();
out.print("标签开始了。<font color=/"red/">hello!</font>");
}catch(Exception e){
System.out.println(e);
}
return EVAL_BODY_INCLUDE;
}
//----标签结束时调用此方法-------
public int doEndTag(){
try{
JspWriter out=pageContext.getOut();
out.print("标签结束了。");
}catch(Exception e){
System.out.println(e);
}
return EVAL_PAGE;
}
}
代码中为正确输出",对此字符用/作了转义。
(2)第二步:编写标签描述tld文件,并将tld文件放于当前应用的/WEB-INF目录下。
myTag.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 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>/myTag</uri>
<!-- 标签库中的标签-->
<!-- helloTag-->
<tag>
<!-- 标签名称-->
<name>helloTag</name>
<!-- 标签对应的处理类-->
<tag-class>hello.helloTag</tag-class>
<!-- 标签体内容,没有标签体则设为empty-->
<body-content>empty</body-content>
</tag>
</taglib>
(3)第三步:在Web应用的web.xml文件中声明标签库引用。本应用中在<web-app>与</web-app>中增加的内容如下:
<taglib>
<taglib-uri>/myTag</taglib-uri>
<taglib-location>/WEB-INF/myTag.tld</taglib-location>
</taglib>
<taglib-uri>对应tld文件中的<uri>,<taglib-location>指出tld文件的位置。
(4)第四步:在JSP页面中声明并调用标签。
useHelloTag.jsp
<%@ taglib uri="/myTag" prefix="myTag" %>
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>一个简单的自定义标签</title>
</head>
<body>
下面是应用这个简单的自定义标签的结果:<br>
<myTag:helloTag/>
</body>
</html>