J2EE 自定义标签的步骤:
1. 对于一个空体标签需要继承javax.servlet.jsp.tagext.TagSupport;
a.重写doStartTag()和doEndTag()方法;
2.在tld文件中注册标签和映射标签对应的方法;
a.将tld注册文件放到WEB-INF目录下,系统自动识别。
b.将tld注册文件放到任意路径,然后在web.xml文件中注册
say.tld 注册文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<!-- 标签定义文件根节点: taglib-->
<taglib>
<!-- 标签库版本 -->
<tlibversion>1.0</tlibversion>
<!-- JSP版本 -->
<jspversion>1.1</jspversion>
<!-- 标签库名称 -->
<shortname>say</shortname>
<!-- 外界导入标签库的url -->
<uri>http://xzl_awin/tags-say</uri>
<tag>
<!-- 标签的名称 -->
<name>helloWorld</name>
<!-- 对应的类 -->
<tagclass>tags.say.HelloWorldTag</tagclass>
</tag>
<tag>
<name>write</name>
<tagclass>tags.say.WriteTag</tagclass>
<attribute>
<!-- 属性 的名称-->
<name>value</name>
<!-- 是否必须指定值 -->
<required>true</required>
<!-- 是否支持表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.在JSP页面中使用:
<%@ page language="java" pageEncoding="GB2312"%>
<!-- uri注册的url prefix自定义标签的前缀 -->
<%@ taglib uri="http://xzl_awin/tags" prefix="say" %>
<html>
<body>
say:helloWorld标签的值:<br>
<say:helloWorld/><br>
say:write value:需要输出的字符串<br>
<say:write value="自定义输出"></say:write>
</body>
</html>
标签返回值:
一般,无体标签 doStartTag() 返回 SKIP_BODY,让标签不要对体求值,
doEndTag() 返回EVAL_PAGE,让标签后面的JSP继续执行;
有体标签 doStartTag() 返回EVAL_BODY_TAG,让标签对体求值,
doEndTag() 返回EVAL_PAGE,让标签后面的JSP继续执行;