天天看點

taglib和自定義标簽的開發之tld檔案

這表示是指令,主要用來提供整個JSP 網頁相關的資訊,并且用來設定JSP網頁的相關屬性,
例如:網頁的編碼方式、文法、資訊等。
起始符号為: <%@
終止符号為: %>
目前有三種寫到<%@ %>内的指令:page、include 和taglib,每一種指令都有各自的屬性。
page 指令是最複雜的JSP指令,它的主要功能為設定整個JSP 網頁的屬性和相關功能。
include 指令表示:在JSP 編譯時插入一個包含文本或代碼的檔案,這個包含的過程是靜态的,
而包含的檔案可以是JSP 網頁、HTML 網頁、文本檔案,或是一段Java 程式。
taglib 指令能夠讓使用者自定義新的标簽。      

自定義标簽的開發步驟:定義一個标簽處理類;定義描述檔案;根據描述檔案處理标簽

      定義描述檔案的過程:在WEB-INF下建立一個tld檔案,複制apache-tomcat-7.0.22\webapps\examples\WEB-INF\jsp2目錄下的jsp2-example-taglib檔案的頭資訊和一個<tag>标簽内資訊到這個事先建立好的tld檔案中,并作出相應修改。

tld部分檔案内容的解釋:

[plain] view plain copy

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  5. version="2.0">   
  6. <!—-此标簽庫的一個簡短描述-->  
  7. <description>there are custom tags of tag</description>  
  8. <!—-此标簽庫的版本,由标簽開發者自行決定(必須元素)-->  
  9.     <tlib-version>1.0</tlib-version>  
  10. <!—-定義一個簡短的名稱,對應jsp頁面的prefix屬性,主要是給一些工具使用(必須元素)-->  
  11. <short-name>tag</short-name>  
  12. <!—-定義此标簽庫的uri路徑,對應jsp頁面taglib标簽的uri屬性,用于唯一辨別該資料庫,便于頁面的引用-->  
  13.     <uri>http://cn.csdn.web.tag</uri>  
  14.     <!—-此标簽庫中的一個标簽處理器的聲明-->  
  15. <tag>  
  16.     <!—-該标簽處理器的一個簡短描述-->  
  17. <description>view ip of client</description>  
  18.     <!—-該标簽名稱(必須元素)-->  
  19. <name>ViewIP</name>  
  20.     <!—-該标簽處理類的全限定名(必須元素)-->  
  21. <tag-class>cn.csdn.web.tag.ViewIP</tag-class>  
  22. <!—-指明該标簽主題類型)-->  
  23.         <body-content>empty</body-content>  
  24.     </tag>  
  25. </taglib>  

tld檔案中要注意的事項:

    必須建立在WEB-INF目錄下;

   <body-content></body-content>中指定标簽體的格式有四種:

     empty:表示标簽沒有标簽體

     scriptless:表示标簽體可以包含EL表達式和JSP的動作元素,但不能包含腳本表達式

     JSP:表示标簽體可以包含JSP代碼

     tagdependent:表示标簽體由标簽本身去解析處理。若指定tagdependent,那麼在标簽體中所寫的代碼将作為純文字原封不動地傳給标簽處理類,而不是将執行結果傳給标簽處理類