jsp中 自定義 tag的幾種方式


在jsp文件中,可以引用tag和tld文件。
1.對於tag文件,使用tagdir引用(這個直接是引用的后綴tag文件的jsp文件)
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags" %>
其中的tags是個目錄,里面有若干tag文件。
但使用<ti:XXXX>時,目錄WEB-INF/tags下,必然有個XXXX.tag文件與之對應。

其實這里直接引tag文件就像include一個jsp文件,可以寫java代碼,可以寫html標簽,可以寫js,用el標簽直接對應屬性名${屬性名}


 
2.對於tld文件(這個可以自定義兩種,不過都是通過Class類擴展的,可以定義的兩種為function和tag,function是el表達式${}擴展的,tag是跟上面一樣<xxx:xxx>這種格式)

2.1基於tld的自定義fucntion 參考  jsp tld的function 自定義方法擴展

2.2基於tld自定義的tag java代碼端參考  jsp tld 的tag 自定義標簽擴展

在jsp中可以引用TLD文件,引用的查找方式:
1.直接指向一個文件,當然就不用照抄了
2.直接指向一串url(其實就是找jar下面的web-inf)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
但是這個 http://java.sun.com/jsp/jstl/core 對應着什么呢?
jsp會在當前目錄的\WEB-INF下找所有tld文件
當找到某一個.tld文件時,發現tld中的

    
    
    
            
  1. <description>JSTL 1.1 core library</description>
  2. <display-name>JSTL core</display-name>
  3. <tlib-version>1.1</tlib-version>
  4. <short-name>c</short-name>
  5. <uri>http://java.sun.com/jsp/jstl/core</uri>


其中的 uri 與這個引入URL對應,則引用的就是這個tld。
但使用<html:YYYYY>時,這個TLD文件中必然有個YYYY項與之對應。



以上在打包jar的 META-INF木木的查找方式是一樣的

 
還有一種更保險的方法是,在WEB-INF/web.xml中加上
<taglib>
    <taglib-uri>
http://jakarta.apache.org/tomcat/examples-taglib
    </taglib-uri>
    <taglib-location>
       /WEB-INF/jsp/example-taglib.tld
    </taglib-location>
</taglib>
這樣表示http://jakarta.apache.org/tomcat/examples-taglib對應着/WEB-INF/jsp/example-taglib.tld
 
ps:tag和tld文件最好放在 (WAR包) WEB-INF或者 (jar包) META-INF根目錄或子目錄下,最好以tags或者tlds文件名命名,至於不放在以上目錄沒測試過
關於在打包jar的時候怎么放進META-INF目錄而且不被自動build的覆蓋
1.解壓jar手動丟進去
2.maven配置待續


tag文件作用一般是一段小代碼,類似include文件的作用。 (直接的一個tag文件,直接當成引一個jsp就可以了,只是開頭多了一些屬性定義和動態獲取屬性的特性 )
tld文件(自定義function和自定義tag java端)作用比較復雜,可以實現很多高級的作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM