步骤
1.创建改标签的处理类,该类继承SimpleTagSupport、并重写doTag()方法;
2.在WEB-INF/下、或是任意子目录下建立xxx.tld文件;3.页面引入自己建立的标签库;<%@ taglib uri="tld文件定义的URI" prefix="标签库的简写" %>
3.使用标签;
【最简单的自定义标签--Hello.World】
1.创建处理类HelloTag.java
public class HelloTag extends SimpleTagSupport {
public void doTag() throws IOException{
getJspContext().getOut().write("Heool-World");
}
}
2.在WEB-INF/下,新建tlds文件,并在其中创建hello.tld
注意:<?xml version="1.0" encoding= "GBK" ?>一定要顶头写,不可有空格!!!
<?xml version="1.0" encoding= "GBK" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version ><!--该标签库的版本,用处不大-->
<short-name>yan</short-name><!--该标签库的简写,用处不大-->
<uri>/com/test/tag/h</uri ><!--该标签库的uri,或是说给标签库的唯一ID,十分重要-->
<tag><!--定义某个标签--开始-->
<name>TextTag</name ><!--标签的名字-->
<tag-class>com.test.tag.HelloTag</tag-class ><!--标签的处理类-->
<body-content>empty</body-content ><!--标签内容-->
</tag><!--定义某个标签--结束-->
</taglib>
3.页面应用
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="GBK"%>
<%@ taglib uri="/com/test/tag/h" prefix="yan" %><!-- uri -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<yan:TextTag></yan:TextTag>
</body>
</html>
带参数的自定义标签
属性 | 作用 | 备注 |
<name> | 属性的名称,如:height=‘90px’ | |
<required> | 是否是必填属性,值为true\false | |
<description> | 属性的描述 | |
<fragment> | 值先传递给容器(false), 直接传给标签处理方法(true) | |
<rtexprvalue> | 指定是否支持运行时表达式 | |
<type> | 值类型 - 默认是java.lang.String |
1.在java类中定义标签属性,并设置geter、seter方法;
public class HelloTag extends SimpleTagSupport {
private String width;
public void doTag() throws IOException{
getJspContext().getOut().write("标签定属性:[width:"+width+"]");
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
}
2.在tld文件的<tag>标签内设置子标签<attribute>;
……
<tag>
<name>TextTag</name ><!--标签的名字-->
<tag-class>com.test.tag.HelloTag</tag-class ><!--标签的处理类-->
<body-content>empty</body-content ><!--标签内容-->
<attribute>
<name>width</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
</tag>
……
3.JSP页面使用
<yan:TextTag width="123px"></yan:TextTag>
4.输出
标签定属性:[width:123px]