日期:2014-05-16  浏览次数:20388 次

jsp自定义标签库的简单入门

做一个最简单的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。

?

附件:目录结构和运行结果。