標準的JSP標記可以調用JavaBeans組件或者執行客戶的請求,這大大降低了JSP開發的複雜度和維護量。JSP技術也允許你自定義的taglib,其實換句話說,taglib可以看成是對JSP標記的一種擴展,正如xml是對html的一種擴展一樣。taglib通常定義在tag標籤庫中,這種標籤庫存放着你自己定義的tag標籤。簡而言之,如果使用taglib,那麼你可以設計自己的JSP標記。
一般來說,自定義tag標籤主要用於操作隱藏對象、處理html提交的表單、訪問數據庫或其他企業級的服務,諸如郵件和目錄操作等等。自定義tag標籤的使用者一般都是那些對java編程語言非常精通,而且對數據訪問和企業級服務都非常熟悉的程序員,對於HTML設計者來說,使得他可以不去關注那些較複雜的商業邏輯,而將精力放在網頁設計上。同時,它也將庫開發者和庫使用者進行合理分工,自定義tag標籤將那些重複工作進行封裝,從而大大提高了生產力,而且可以使得tag庫可用於不同的項目中,完美地體現了軟件複用的思想。
Taglib指令:定義一個標籤庫,以及其自定義標籤的前綴。
JSP中使用Taglib,用兩種方法,這裏將兩種方法說明如下:
一、僅聲明TLD(標籤庫描述符)的位置
在jsp文件頭部,聲明:
<%@taglib uri="/WEB-INF/tlds/orataglib_1_0.tld" prefix="ora" %>
舉例:在MyEclipse中新建一Web工程,取名爲HelloWorldTag。新建一包,包名爲mytag
(1)在mytag下,新建一Java類,內容如下:
package mytag;
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloWorldTag extends TagSupport{
public int doStartTag() throws JspTagException{
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspTagException{
try{
pageContext.getOut().write("Hello World");
} catch (IOException ex){
throw new JspTagException("Error!");
}
return EVAL_PAGE;
}
}
(2)在WEB-INF下新建一目錄,目錄名爲tlds,下tlds下面新建一tld文件,命名爲hello.tld,內容如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>myTag</shortname>
<tag>
<name>hello</name>
<tagclass>mytag.HelloWorldTag</tagclass>
<bodycontent>empty</bodycontent>
</tag>
</taglib>
(3)修改index.jsp頁面代碼,修改內容如下:
<%@ page language="java"%>
<%@ taglib uri="/WEB-INF/tlds/hello.tld" prefix="mytag"%>
<html>
<body>
<mytag:hello></mytag:hello>
</body>
</html>
運行結果爲:Hello World
解釋:
<mytag:hello></mytag:hello>的作用就是在標籤結束後調用了doEndTag() 方法,打印出Hello World
二、定義庫名稱
這裏就不再詳細描述了。