簡介
自訂標示是一種延伸 JSP API 的機制。自訂標示可以延伸 JSP 網頁的宣告語法。JSP 標示以 Java 實作,但透過類似 HTML 的標示來啟動。不同於 HTML 標示,JSP 標示由伺服器處理,不是由用戶端瀏覽器來處理。
自訂標示可以清楚劃分 Web 設計師(JSP 開發人員)和 Java 程式設計師的責任。Java 程式設計師會實作自訂的 JSP 標示。Web 設計師可利用宣告語法,選取這些標示來啟動 Java 實作。
JSP 設計師可宣告標示來「呼叫」Java 程式碼,Java 開發人員會在標示處理常式中開發程式碼,如下圖所示。
為了提供自訂標示,Java 開發人員必須提供兩個項目:
標示處理常式
標示處理常式是實作 Tag 介面的類別。有兩個程式庫類別可以更容易提供標示處理常式。這兩個類別是 javax.servlet.jsp.TagSupport 和
javax.servlet.jsp.BodyTagSupport。TagSupport 類別適用於沒有主體的標示;BodyTagSupport 適用於具有主體的標示。
以下是一個最簡單的標示處理常式實作的範例。
標示庫描述元
必須建立標示庫描述元,JSP 才能使用 JSP 自訂標示。標示庫描述元是隨著標示處理常式一起部署在 Web 伺服器上的 XML 檔案。
以下是一個簡單的標示庫檔案,內含 HelloWorld 標示庫描述元。
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLScheme-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>simp</short-name>
<uri> http://www.inferdata.com/taglib/hello-world</uri>
<description>Simple example of a JSP custom tag</description>
<tag>
<name>hello</name>
<tag-class>com.inferdata.taglib.HelloWorld</tag-class>
<body-content>empty</body-content>
<description>Simple hello world tag</description>
</tag>
</taglib>
|