[導(dǎo)入]在jsp中使用標(biāo)簽的方式,并解答不定義dtd文件的情況下使用標(biāo)簽庫(kù)的方法
今天下午去買了Logitech的光電專家新版鍵盤鼠標(biāo)套裝,感覺很不錯(cuò),感謝勇明同學(xué)的推薦,所以連夜趕出這篇文章來(lái)回報(bào)他:)
上次提到同事提到了基本的技術(shù)問(wèn)題我也沒有回答上來(lái),其實(shí)他的問(wèn)題很簡(jiǎn)單:
<%@ taglib prefix="html" uri="http://jakarta.apache.org/struts/tags-html" %>
<%@ taglib prefix="bean" uri="http://jakarta.apache.org/struts/tags-bean" %>
<%@ taglib prefix="logic" uri="http://jakarta.apache.org/struts/tags-logic" %>
<%@ taglib prefix="nested" uri="http://jakarta.apache.org/struts/tags-nested" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
我們?cè)趈sp頁(yè)面中只是用http打頭的uri去引用這些標(biāo)簽庫(kù),但是沒有在web.xml中引用任何的dtd,那么系統(tǒng)去哪里知道這些標(biāo)簽是怎么定義的呢?我就一下子被問(wèn)倒了,這個(gè)還真是個(gè)問(wèn)題,當(dāng)時(shí)我就覺得應(yīng)該是在某個(gè)jar中,但是我們的lib下面的jar好像又沒有這樣的jar,這些怎么辦?
我這個(gè)google的粉絲當(dāng)然是要到google去尋找答案了,開始使用的關(guān)鍵字少,沒有抓到要點(diǎn),而且用中文,在中文站點(diǎn)中沒有找到可以使用的文章,所以后來(lái)我用了“jsp taglib uri = http”,這時(shí)候找到了一篇文章http://faq.javaranch.com/view?JstlTagLibDefinitions,這里解釋了jstl標(biāo)簽庫(kù)的使用方法也是像我們最后兩行那樣做一個(gè)定義,而所有的東西都在jstl.jar standard.jar這兩個(gè)jar中,我用winrar打開了這兩個(gè)jar,發(fā)現(xiàn)路徑下面果然有java/sun/com/jstl/core,原來(lái)這個(gè)uri的寫法對(duì)應(yīng)了java的路徑,這樣就搞清楚了,那么struts的標(biāo)簽也就在struts.jar里面了。這個(gè)問(wèn)題就解決了,關(guān)鍵的問(wèn)題還是沒有好好的把這些技術(shù)細(xì)節(jié)搞清楚。
附錄:使用tag標(biāo)簽的方法(轉(zhuǎn)載來(lái)的文章片斷)
要使用tag標(biāo)簽,JSP程序員必須做2件事:
· 聲明此tag標(biāo)簽的tag庫(kù)
· 實(shí)現(xiàn)此tag標(biāo)簽
聲明tag標(biāo)簽所在的tag庫(kù)
如果要使用tag標(biāo)簽,則應(yīng)用JSP的taglib指示符來(lái)指定其tag庫(kù)(注意:taglib要在在使用此tag標(biāo)簽之前聲明)
<%@ taglib uri=”/WEB-INF/tutorial-template.tld” prefix=”tt” %>
uri屬性定義了唯一的標(biāo)簽庫(kù)描述(以下簡(jiǎn)稱TLD),它可以是直接是tld文件名或一個(gè)獨(dú)一無(wú)二的名字。prefix是用來(lái)區(qū)別其它TLD中和本TLD中有重名的tag的一種手段。
TLD必須以.tld作為擴(kuò)展名,并且存放在當(dāng)前應(yīng)用的WEB-INF目錄或其子目錄下。你可以通過(guò)它的文件名直接引用它,也可以通過(guò)別的方式間接地引用它。
以下taglib指示符直接引用一個(gè)TLD:
<%@ taglib uri=”/WEB-INF/tutorial-template.tld” prefix=”tt” %>
以下的taglib指示符通過(guò)一個(gè)邏輯名稱間接地引用一個(gè)TLD:
<%@ taglib uri=”/tutorial-template” prefix=”tt” %>
如果是間接引用TLD的話,那你必須還要在web.xml中定義此邏輯名稱與tld文件之間的映射,具體做法是在web.xml中加入一個(gè)名為taglib的元素:
<taglib>
<taglib-uri>/tutorial-template</taglib-uri>
<taglib-location>
/WEB-INF/tutorial-template.tld
</taglib-location>
</taglib>
文章來(lái)源:http://blog.donews.com/crabhn/archive/2006/02/20/735226.aspx
posted on 2006-02-21 07:44 crabhn's blog 閱讀(1575) 評(píng)論(1) 編輯 收藏