什么是.tld文件

TLD术语解释:标签库描述文件.                                                                                                                                          如要在JSP页面中实现JSP标签,必须首先定义实现标签的类,然后在标签库描述文件(TLD)中将写好的类映射成jsp标签,最后在JSP文件中使用定义好的标签,就可以生成动态的JSP内容.
比如,我自定义一个out标签,用tld文件描述.                                                                                                                     
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>Simple Tags</short-name>
	<uri>/zking</uri>
	<!-- hello world标签 -->
	<tag>
		<!-- 标签名 -->
		<name>out</name>
		<!-- 标签助手类(实现类) 放入类的全限定名 -->
		<tag-class>com.tag.OutTag</tag-class>
		<!-- 标签的内容类型:empty表示空标签(使用空标签会报错),jsp表示可以为任何合法的JSP元素 -->
		<body-content>JSP</body-content>
		<attribute>
		    <!-- 属性名 -->
			<name>value</name>
			<!-- 是否为必填项 -->
			<required>true</required>
			<!--是否可以填jsp表达式  el表达式 -->
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>
现在显示一个标签助手类OutTag
public class OutTag extends BodyTagSupport{
	//一个属性对应一个实体中的属性
	private Object value;
	
	 
   public Object getValue() {
		return value;
	}

	public void setValue(Object value) {
		this.value = value;
	}

	//继承一个标签类
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	//开始标签的方法
	@Override
	public int doStartTag() throws JspException {
		try { 
			//界面显示接收的属性值
			pageContext.getOut().print(value);;
		} catch (Exception e) {
			e.printStackTrace();
		}
		//显示标签内容      EVAL_BODY_INCLUDE
		//不显示标签内容  SKIP_BODY
		return  EVAL_BODY_INCLUDE; 
	    }
	
	 
	//结束标签的方法
	@Override
	public int doEndTag() throws JspException {
		//跳过闭签后的内容 直到html闭签  SKIP_PAGE
		//不跳过闭签之后的内容                  EVAL_PAGE
		return EVAL_PAGE;
	} 
	
    }

SKIP_BODY隐含0    :跳过了开始和结束标签之间的代码。  
EVAL_BODY_INCLUDE隐含1:将body的内容输出到存在的输出流中
SKIP_PAGE隐含5 : 忽略剩下的页面。
EVAL_PAGE隐含6:继续执行下面的页
doStartTag()和doEndTag()返回值是在Tag  Interface里定义的静态int  

任何使用自定义标签

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="z" uri="/zking" %>
<!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=UTF-8">
<title>Out标签</title>
</head>
<body>
<%
    String str="哈哈哈,很高兴见到你!";
    request.setAttribute("str", str);

%>
<!--  使用文本输出 -->
<z:out value="这是我的第一个自定义标签">   噢耶</z:out>
</br>
<!-- 使用EL表达式输出 --> 
<z:out value="${str}"></z:out>
<!-- 使用jsp表达式输出 -->
</br>
<z:out value="<%=1+1 %>"></z:out>
</body>
</html>

输出结果为:


以上是较为简单的示范了一下如何使用自定义标签输出,比较浅显易懂,以后会更深入的去了解一下更多关于标签的知识,还请各位             大神多多指教,谢谢,嘻嘻!

                                       

猜你喜欢

转载自blog.csdn.net/qqqnzhky/article/details/80563823
tld