做一个最简单的jsp的自定义标签库,主要是入门加熟悉。
1、写个jsp页面,在页面里面使用自定义库。customTag.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="pr" uri="/customUri"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>customTag.jsp</title>
</head>
<body>
<br>
<!-- 下面为自定义标签mytag -->
<pr:mytag myattr="testString"></pr:mytag>
</body>
</html>
2、在web.xml中要配置自定义库uri为"/customUri"的引用,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"> <!-- 标签库的引用定义 --> <taglib> <taglib-uri>/customUri</taglib-uri> <taglib-location>/WEB-INF/customTags.tld</taglib-location> </taglib> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3、创建web.xml里面引用的WEB-INF文件夹下面的customTags.tld文件,也就是自定义标签库文件,xml格式的:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>sh</short-name> <tag> <!-- 页面中使用的标签名mytag --> <name>mytag</name> <!-- 这个标签所对应的标签类,继承自javax.servlet.jsp.tagext.TagSupport --> <tag-class>com.xxx.platform.tag.MyTags</tag-class> <!-- mytag标签中的myattr属性定义 --> <attribute id="my"> <name>myattr</name> <!-- 该属性在mytag标签中非必须 --> <required>false</required> <type>String</type> </attribute> </tag> </taglib>
4、创建标签所引用的标签类,继承自javax.servlet.jsp.tagext.TagSupport类,com.xxx.platform.tag.MyTags.java:
package com.xxx.platform.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class MyTags extends TagSupport {
// 对应到mytag标签中的属性myattr,必须要有set和get方法
private String myattr;
public String getMyattr() {
return myattr;
}
public void setMyattr(String var) {
this.myattr = var;
}
public MyTags() {
}
@Override
public int doAfterBody() throws JspException {
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
// 在mytag标签开始的时候做简单处理打印一句话。
JspWriter out = pageContext.getOut();
try {
out.print("it is my custom tags and the myattr is "+myattr+".");
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
5、将工程部署到tomcat中,运行,OK。
附件:目录结构和运行结果。