2012-03-11 84 views
1

我看了一下JSTL標籤這裏的信息:JSTL XML文件何時實際讀取?

https://stackoverflow.com/tags/jstl/info

而且有一件事我真的不明白......

當你引用了一些文件,就像這裏:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

或在這裏:

<html xmlns:c="http://java.sun.com/jsp/jstl/core"> 

該文件何時實際讀取?這個文件是否真的從網絡上讀取?如果該文件實際上是從網絡上讀取的,那麼在沒有外部網絡訪問(沒有互聯網)的高度安全環境中如何開發/測試?

該文件(這些文件)可以被讀取一次並保存在本地,然後在本地引用嗎?

如果我試圖打開網頁或做wget的http://java.sun.com/jsp/jstl/core,我,不是由web應用服務器越來越明顯的東西,是指由一個人來讀。

回答

2

當servletcontainer啓動時,它會掃描整個類路徑以查找所有已部署的JAR文件的.tld文件,包括/META-INF文件夾。 JSTL的JAR文件中他人c.tld文件,它開始像如下:

<taglib xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
    version="2.1"> 

    <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>條目。這在servletcontainer的啓動過程中被解析和記住。 .tld文件爲每個標籤聲明標籤處理程序類,它代表具體的Java代碼完成「幕後」的所有工作。例如,<c:out>聲明如下:

<tag> 
    <description> 
     Like &lt;%= ... &gt;, but for expressions. 
    </description> 
    <name>out</name> 
    <tag-class>org.apache.taglibs.standard.tag.rt.core.OutTag</tag-class> 
    <body-content>JSP</body-content> 
    ... 

現在,當一個JSP文件聲明與正是這種URI,那麼.tld文件中的問題將被用於定位標籤類和執行這些標籤庫。

因此,taglib URI只是一個虛擬地址,它只存在於servletcontainer的上下文中,而不是外部,即使某些taglibs碰巧在該URI後面有一個真實的HTTP站點。該URI只是一個唯一的標識符。它不一定需要是http://something。它可以是一切,但網站地址是一個相對強大的唯一標識符。這保證幾乎100%都不會有其他taglib具有相同的URI。順便說一下,您在包名中也會看到這種獨特性。

+0

+1並且接受... *「因此,taglib URI只是一個虛擬地址,它只存在於servletcontainer的上下文中,而不是在」* ...哦哦「之外。然而,它以'http://'開頭:(我以某種方式發現這不僅非常令人困惑: - /我知道軟件包名稱,但至少這些不是以看起來像協議的形式開始的:) – 2012-03-11 03:32:21

+1

請注意,它是一個URI,而不是一個URL。請參閱維基百科瞭解其差異。 – BalusC 2012-03-11 03:33:30

+0

哦,確定...而這本身也是人們主要的**主要來源之一。 URI/URL的區別本身就是SNAFU的一個主要概念。這裏我們有一個URI,它看起來就像一個URL,因爲一個URI可以(它不需要,但它可以)通過一個位置來標識一個資源,這是非常非常非常混亂的。我悲傷地認爲,我們生活在一個非常混亂的世界,由不完整,思想欠佳,「標準」和「規格」組成。謝天謝地,一些紀律(如工程和醫學)比計算有更高的標準; ) – 2012-03-11 12:09:27