(銅仁幼兒師范高等??茖W(xué)校 貴州 銅仁 554300)
綜述JSP2的自定義標(biāo)簽特性
張衛(wèi)
(銅仁幼兒師范高等??茖W(xué)校貴州銅仁554300)
jsp技術(shù)相比較于其他動(dòng)態(tài)網(wǎng)站技術(shù),因?yàn)槠淞己玫囊?guī)范以及安全性得到業(yè)界的廣泛認(rèn)可,2003年發(fā)布的jsp2.0規(guī)范,在原來jsp1.2規(guī)范的基礎(chǔ)上,增加了一些額外的特性,使動(dòng)態(tài)網(wǎng)頁的開發(fā)更便捷,對(duì)團(tuán)隊(duì)協(xié)作開發(fā)提供了良好的支持,因?yàn)閖sp本質(zhì)就是servlet,所以針對(duì)目前servlet3.1對(duì)應(yīng)于當(dāng)下的jsp2.3規(guī)范,jsp2.3一般稱為jsp2。
動(dòng)態(tài)網(wǎng)站;jsp;java;servlet;自定義標(biāo)簽
jsp是從servlet中分離的側(cè)重于表現(xiàn)的動(dòng)態(tài)網(wǎng)頁技術(shù),其中可以對(duì)服務(wù)器程序作出聲明,以及使用運(yùn)行容器提供的內(nèi)部對(duì)象,便于操作和使用。servlet的使用需要在web.xml文件中進(jìn)行對(duì)應(yīng)的配置。jsp2要求web.xml必須使用servlet2.4以上的配置文件。這個(gè)配置體現(xiàn)在web.xml中web-app節(jié)點(diǎn)的version屬性中。技術(shù)的變革必然帶來一些新的特性,jsp2主要表現(xiàn)在以下幾個(gè)方面:
(1)表達(dá)式語言。
(2)直接配置jsp屬性。
(3)簡化的自定義標(biāo)簽API。
(4)Tag文件語法。
其中jsp屬性的配置可以在web.xml中進(jìn)行,通常jsp屬性的配置主要包括以下四個(gè)方面,是否允許表達(dá)式語言,是否允許使用jsp腳本,聲明jsp編碼,使用隱式包含其他頁面。格式如下:
在上面配置文件中采用漢字提示各個(gè)標(biāo)簽內(nèi)部意義,可以直觀看出配置文件可以批量設(shè)置文件的作用屬性,不同配置策略可以使用多個(gè)jsp-property-group標(biāo)簽來設(shè)置。
表達(dá)式語言EL(expression language)是一種簡化的數(shù)據(jù)訪問方式。在jsp中建議盡量使用表達(dá)式語言,如此可以避免使用java腳本,保證jsp文件風(fēng)格一致。表達(dá)式語言使用格式比較簡單,格式為${expression},這些表達(dá)式可以是一些基本的運(yùn)算,如${12/3}等,也可以支持表達(dá)式語言的內(nèi)置對(duì)象以及其自定義函數(shù)。注意在支持表達(dá)式的頁面$符號(hào)被賦予特殊的作用,所以要輸出$要加轉(zhuǎn)義符。
下面介紹下EL的內(nèi)置對(duì)象,表達(dá)式語言主要包含11個(gè)內(nèi)置對(duì)象,包括pageContext,pageScope,requestScope,sessionScope,applicationScope,param,parameValues(數(shù)組),header,headerValues,initParam,cookie。訪問格式為${內(nèi)置對(duì)象.屬性}或者${內(nèi)置對(duì)象[屬性]},如${header.host},${cookie[“name”].value},${sessionScope[“user”]}等。
表達(dá)式語言還可以通過其自定義函數(shù)擴(kuò)充自身的功能,其定義方法近似于標(biāo)簽的開發(fā)步驟,分為以下三步:
1.開發(fā)函數(shù)處理類,不用向標(biāo)簽類那樣繼承于SimpleTagSupport類,直接是普通類即可,但是內(nèi)部需要包含靜態(tài)方法。
2.使用標(biāo)簽庫定義函數(shù),其中只要配置name,function-class,function-signature即可。
3.在jsp的EL中使用函數(shù)。使用的時(shí)候需要先導(dǎo)入標(biāo)簽庫,然后使用函數(shù)。
下面請(qǐng)看簡單示例:
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”>
其他方法的配置
在頁面中使用的時(shí)候需要調(diào)用tld配置文件中的shortname并聲明(<%@ taglib prefix=”majic”uri=”唯一標(biāo)識(shí)”%>),格式為${shortname:函數(shù)(參數(shù))},如${majic:fan(“nihao”)}。
另外如果覺得使用自定義標(biāo)簽比較麻煩的話,還可以使用Tag File自定義標(biāo)簽,使用Tag File無須定義標(biāo)簽處理類和標(biāo)簽庫文件而能在頁面中使用自定義標(biāo)簽的一種方法。
其使用分為兩步,首先建立Tag文件,tag文件具有5個(gè)編譯指令,tablib,include,tag,attribute,variable,其頁面使用語法接近于jsp。
<%@ tag pageEncoding=”gbk”import=”java.util.List”%>
<%@ attribute name=”tag1”%>
<%@ attribute name=”tag2”%>
在網(wǎng)頁中調(diào)用的時(shí)候首先加載自定義標(biāo)簽,啟動(dòng)聲明,<%@ taglib prefix=”majic”tagdir=”/路徑/每個(gè)標(biāo)簽是一個(gè)文件”%>
在頁面中調(diào)用的時(shí)候,可以將一個(gè)List存入request屬性,然后使用標(biāo)簽調(diào)用得到。
總結(jié):
使用表達(dá)式語言可以簡化數(shù)據(jù)庫訪問方式,封閉程序的調(diào)用結(jié)構(gòu),從而讓這個(gè)頁面表現(xiàn)具備統(tǒng)一的規(guī)范,便于美工設(shè)計(jì)人員使用該語法獲取業(yè)務(wù)邏輯組件傳來的變量值,給開發(fā)帶來了極大的便利。
[1]基于J2EE平臺(tái)MVC模式的就業(yè)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].靳秀蘭,張曉琳.科技信息.2010(02)
[2]基于AJAX和XML的無線通訊基站查詢系統(tǒng)設(shè)計(jì)[J].張明,戴友元.價(jià)值工程.2010(05)
張衛(wèi),碩士研究生學(xué)歷,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),銅仁幼兒師范高等專科學(xué)校講師,研究方向有網(wǎng)格計(jì)算,計(jì)算機(jī)軟件與程序設(shè)計(jì),多年從事一線教育工作和知名大學(xué)計(jì)算機(jī)實(shí)訓(xùn)培訓(xùn)工作。