(銅仁幼兒師范高等專科學校 貴州 銅仁 554300)
綜述JSP2的自定義標簽特性
張衛
(銅仁幼兒師范高等專科學校貴州銅仁554300)
jsp技術相比較于其他動態網站技術,因為其良好的規范以及安全性得到業界的廣泛認可,2003年發布的jsp2.0規范,在原來jsp1.2規范的基礎上,增加了一些額外的特性,使動態網頁的開發更便捷,對團隊協作開發提供了良好的支持,因為jsp本質就是servlet,所以針對目前servlet3.1對應于當下的jsp2.3規范,jsp2.3一般稱為jsp2。
動態網站;jsp;java;servlet;自定義標簽

jsp是從servlet中分離的側重于表現的動態網頁技術,其中可以對服務器程序作出聲明,以及使用運行容器提供的內部對象,便于操作和使用。servlet的使用需要在web.xml文件中進行對應的配置。jsp2要求web.xml必須使用servlet2.4以上的配置文件。這個配置體現在web.xml中web-app節點的version屬性中。技術的變革必然帶來一些新的特性,jsp2主要表現在以下幾個方面:
(1)表達式語言。
(2)直接配置jsp屬性。
(3)簡化的自定義標簽API。
(4)Tag文件語法。
其中jsp屬性的配置可以在web.xml中進行,通常jsp屬性的配置主要包括以下四個方面,是否允許表達式語言,是否允許使用jsp腳本,聲明jsp編碼,使用隱式包含其他頁面。格式如下:
在上面配置文件中采用漢字提示各個標簽內部意義,可以直觀看出配置文件可以批量設置文件的作用屬性,不同配置策略可以使用多個jsp-property-group標簽來設置。
表達式語言EL(expression language)是一種簡化的數據訪問方式。在jsp中建議盡量使用表達式語言,如此可以避免使用java腳本,保證jsp文件風格一致。表達式語言使用格式比較簡單,格式為${expression},這些表達式可以是一些基本的運算,如${12/3}等,也可以支持表達式語言的內置對象以及其自定義函數。注意在支持表達式的頁面$符號被賦予特殊的作用,所以要輸出$要加轉義符。
下面介紹下EL的內置對象,表達式語言主要包含11個內置對象,包括pageContext,pageScope,requestScope,sessionScope,applicationScope,param,parameValues(數組),header,headerValues,initParam,cookie。訪問格式為${內置對象.屬性}或者${內置對象[屬性]},如${header.host},${cookie[“name”].value},${sessionScope[“user”]}等。
表達式語言還可以通過其自定義函數擴充自身的功能,其定義方法近似于標簽的開發步驟,分為以下三步:
1.開發函數處理類,不用向標簽類那樣繼承于SimpleTagSupport類,直接是普通類即可,但是內部需要包含靜態方法。
2.使用標簽庫定義函數,其中只要配置name,function-class,function-signature即可。
3.在jsp的EL中使用函數。使用的時候需要先導入標簽庫,然后使用函數。
下面請看簡單示例:
public class MyFun
{
public static int tongji(String str)
{
return str.length;}
public static String fan(String str)
{
return new String().reverse();
}
}
在src路徑下配置mytag.tld
<?xml version=”1.0”encoding=”gbk”>
其他方法的配置
在頁面中使用的時候需要調用tld配置文件中的shortname并聲明(<%@ taglib prefix=”majic”uri=”唯一標識”%>),格式為${shortname:函數(參數)},如${majic:fan(“nihao”)}。
另外如果覺得使用自定義標簽比較麻煩的話,還可以使用Tag File自定義標簽,使用Tag File無須定義標簽處理類和標簽庫文件而能在頁面中使用自定義標簽的一種方法。
其使用分為兩步,首先建立Tag文件,tag文件具有5個編譯指令,tablib,include,tag,attribute,variable,其頁面使用語法接近于jsp。
<%@ tag pageEncoding=”gbk”import=”java.util.List”%>
<%@ attribute name=”tag1”%>
<%@ attribute name=”tag2”%>
在網頁中調用的時候首先加載自定義標簽,啟動聲明,<%@ taglib prefix=”majic”tagdir=”/路徑/每個標簽是一個文件”%>
在頁面中調用的時候,可以將一個List存入request屬性,然后使用標簽調用得到。
總結:
使用表達式語言可以簡化數據庫訪問方式,封閉程序的調用結構,從而讓這個頁面表現具備統一的規范,便于美工設計人員使用該語法獲取業務邏輯組件傳來的變量值,給開發帶來了極大的便利。
[1]基于J2EE平臺MVC模式的就業管理信息系統的設計與實現[J].靳秀蘭,張曉琳.科技信息.2010(02)
[2]基于AJAX和XML的無線通訊基站查詢系統設計[J].張明,戴友元.價值工程.2010(05)
張衛,碩士研究生學歷,計算機科學與技術專業,銅仁幼兒師范高等專科學校講師,研究方向有網格計算,計算機軟件與程序設計,多年從事一線教育工作和知名大學計算機實訓培訓工作。