什麼是.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>

輸出結果爲:


以上是較爲簡單的示範了一下如何使用自定義標籤輸出,比較淺顯易懂,以後會更深入的去了解一下更多關於標籤的知識,還請各位             大神多多指教,謝謝,嘻嘻!

                                       
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章