概括地说,自定义标签编写包括四个步骤:
1.编写标签处理类
2.编写标签描述tld文件
3.配置web.xml文件
4.在jsp页面中声明并调用标签
编写标签处理类
1)放在一个包中,即package **;
2)导入必要的包:import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.*等。
3)在编译标签处理类时,须将jsp-api.jar(位于tomcat的common\lib目录下)文件加入到classpath中
标签描述文件
tld文件由一系列元素组成,涉及的元素很多,其中必需的元素有:
<taglib>:根元素
<tlib-version>:标签库版本号
<uri>:标签库唯一uri的元素
<tag>:描述每个标签处理器及属性的元素
以下是<tag>标签下的元素:
<name>:与标签库名字前缀一起使用的标签名字
<tag-class>:标签处理类的名称,包括包的名字
<body-content>:描述标签处理器使用标签体的方式
<attribute>:描述相关属性信息
配置web.xml文件
作用:声明标签库引用
<taglib>
<taglib-uri>与tld文件中的uri一致</taglib-uri>
<taglib-location>tld文件的路径</taglib-location>
</taglib>
在jsp页面中声明并调用
1)<%@taglib uri=”与tld文件中的uri一致” prefix=”使用时的前缀名字”%>
2)使用格式:<前缀名字:tag名字 相关属性赋值>
程序举例(实现简单的文本框)
java程序:
package tags;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class Textbox extends TagSupport
{
private String lable="";
private String name="";
private String value="";
private String maxlength="20";
public void setLable(String lable){
this.lable=lable;
}
public void setName(String name){
this.name=name;
}
public void setValue(String value){
this.value=value;
}
public void setMaxlength(String maxlength){
this.maxlength=maxlength;
}
public int doStartTag(){
try{
JspWriter out=pageContext.getOut();
out.print("<label>"+lable+"</label>");
out.println("<input value='"+value+"' name='"+name+"' size='"+maxlength+"' id='textbox' >");
}catch(Exception e){
System.out.println("failed");
}
return EVAL_BODY_INCLUDE;
}
}
<?xml version="1.0" encoding="ISO-8859-1"
?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
<tag>
</tag>
</taglib>
<?xml version="1.0"
encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
</web-app>
<%@page
contentType="text/html;charset=gb2312"%>
<%@taglib uri="/mytag"
prefix="my"%>
<html>
<head>
</head>
<body>
</body>
</html>
联系客服