注意:運算式語言最初是作為JSP標準標籤庫(JSTL)1.0的一部分而開發的,JSTL是一種標準標籤庫,它提供對通用的、結構化的任務的支援,如迭代和條件、XML文檔處理、國際化和利用SQL訪問資料庫等。JSTL規範是由JSR 52專家組開發的。關於JSTL的介紹,請參見Faster Development with JSTL(使用JSTL加速開發).
package jsp2.examples.el;
import java.util.*;
public class Compute {
public static int add(String x, String y) {
int a = 0;
int b = 0;
try {
a = Integer.parseInt(x);
b = Integer.parseInt(y);
}catch(Exception e) {}
return a + b;
}
}
用javac把這段代碼編譯成功後,下一步就要把函數的簽名映射到標籤庫。程式碼範例4說明了如何把add函數映射到包含函數實現和函數簽名的類。後面將說明把這段代碼添加到哪兒。
程式碼範例4: 函數描述符
<function>
<description>add x and y</description>
<name>add</name>
<function-class>jsp2.examples.el.Compute
</function-class>
<function-signature>int
add(java.lang.String,java.lang.String)
</function-signature>
</function>
現在我們就可以編寫一個JSP頁面來使用這個函數。程式碼範例5是包含兩個欄位的一個表單,使用者輸入兩個數字並按下“求和”按鈕,就會調用上面的函數並把兩個數相加,結果在同一個頁面中顯示出來。
程式碼範例5: math.jsp
<%@ taglib prefix="my"
uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>
<HEAD>
<TITLE>Functions</TITLE>
</HEAD>
<BODY>
<H3>Add Numbers</H3>
<P>
<FORM action="math.jsp" method="GET">
X = <input type="text" name="x" value="${param["x"]}">
<BR>
Y = <input type="text" name="y" value="${param["y"]}">
<input type="submit" value="Add Numbers">
</FORM>
<P>
The sum is: ${my:add(param["x"],param["y"])}
</BODY>
</HTML>
要運行這個例子:
首先來看第一種方式,程式碼範例6給出了一個簡單的標籤處理器,它的作用僅僅是列印“This is my first tag! ”。
程式碼範例6: HelloTag.java
package jsp2.examples.simpletag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
/**
* SimpleTag handler that prints "This is my first tag!"
*/
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("This is my first tag!");
}
}
編譯成功後,下一步就要在TLD中定義一個標籤描述符,下面是標籤描述符的例子。
程式碼範例7: 標籤描述符
<tag>
<description>Prints this is my first tag</description>
<name>hello</name>
<tag-class>jsp2.examples.simpletag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
最後再編寫一個使用上述標籤的JSP分頁檔,見程式碼範例8。
程式碼範例8: helloworld.jsp
<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
<HTML>
<HEAD>
<TITLE>Simple Tag Handler</TITLE>
</HEAD>
<BODY>
<H2>Simple Tag Handler</H2>
<P>
<B>My first tag prints</B>: <mytag:hello/>
</BODY>
</HTML>
要運行這個例子:
Hello there. How are you doing?
一旦定義了標籤檔案,就可以在JSP網頁的編寫中使用這種定製的功能。比如程式碼範例10中的JSP網頁。
程式碼範例10: chat.jsp
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<HTML>
<HEAD>
<TITLE>JSP 2.0 Examples - Hello World Using a Tag File</TITLE>
</HEAD>
<BODY>
<H2>Tag File Example</H2>
<P>
<B>The output of my first tag file is</B>: <tags:greetings/>
</BODY>
</HTML>
要運行這個例子:
更多資訊
Fast Track JSP 1.2
JavaServer Pages Technology
JavaServer Pages Specification (JSR 152)
The Tomcat 5 Servlet/JSP Container
JSP Developers Forum
JavaServer Pages Standard Tag Library (JSTL)
Faster Development with JavaServer Pages Standard Tag Library (JSTL 1.0)