在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中的
<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>c</short-name>
<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端)作用比較復雜,可以實現很多高級的作用。
