資源描述:
《jsp page指令詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、jsppage指令詳解一、JSP指令JSP指令(directive)影響由JSP頁(yè)面生成的servlet的整體結(jié)構(gòu)。下面的模板給出指令的兩種可能形式。屬性值兩邊的雙引號(hào)可以替換為單引號(hào),但引號(hào)標(biāo)記不能完全省略。如果要在屬性值中使用引號(hào),則要在它們之前添加反斜杠,'使用',"使用"<%directiveattribute="value"%><%directiveattribute1="value1"attribute2="value2"......attribute3="value3"%>在JSP中,主
2、要有3種類(lèi)型的指令:page,include和taglib。page指令允許通過(guò)類(lèi)的導(dǎo)入、servlet超類(lèi)的定制、內(nèi)容類(lèi)型的設(shè)置、以及諸如此類(lèi)的事物來(lái)控制servlet的結(jié)構(gòu)。page指令可以放在文檔中的任何地方。第二個(gè)指令,include允許在JSP文件轉(zhuǎn)換到servlet時(shí),將一個(gè)文件插入到JSP頁(yè)面中。include指令應(yīng)該放置在文檔中希望插入文件的地方。第三個(gè)指令,taglib,定義自定義的標(biāo)記標(biāo)簽。二、JSPpage指令page指令可以定義下面這些大小寫(xiě)敏感的屬性(大致按照使用的頻率列出):i
3、mport、contentType、pageEncoding、session、isELIgnored(只限JSP2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language和extends。2.1import屬性使用page指令的import屬性指定JSP頁(yè)面轉(zhuǎn)換成的servlet應(yīng)該輸入的包。在JSP中,包是絕對(duì)必需的。原因是,如果沒(méi)有使用包,系統(tǒng)則認(rèn)為所引用的類(lèi)與當(dāng)前類(lèi)在同一個(gè)包中。例如,假定一個(gè)JSP頁(yè)面包含下面的scr
4、iptlet:<%Testt=newTest();%>在此,如果Test在某個(gè)輸入包中,則沒(méi)有歧義。但是,如果Test不在包中,或者頁(yè)面沒(méi)有明確地導(dǎo)入Test所屬的包,那么系統(tǒng)將會(huì)認(rèn)為T(mén)est就在這個(gè)自動(dòng)生成的servlet所在的包中。但問(wèn)題是自動(dòng)生成的servlet所在的包是未知的!服務(wù)器在創(chuàng)建servlet時(shí),常常會(huì)根據(jù)JSP頁(yè)面所在的目錄來(lái)決定它的包。別的服務(wù)器可能使用其他不同的方式。因此,不能指望不使用包的類(lèi)能夠正常工作。對(duì)于bean也同樣如此,因?yàn)閎ean不過(guò)是遵循某些簡(jiǎn)單命名約定和結(jié)構(gòu)約定的類(lèi)
5、。?默認(rèn)情況下,servlet導(dǎo)入java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*,也許還包括一些服務(wù)器特有的包。編寫(xiě)JSP代碼時(shí),絕不要依靠任何自動(dòng)導(dǎo)入的服務(wù)器特有類(lèi)。這樣做會(huì)使得代碼不可移植。使用import屬性時(shí),可以采用下面兩種形式:<%@pageimport="package.class"%><%@pageimport="package.class1,...,package.classN"%>例如,下面的指令
6、表示java.util包和cn.foololdfat包中的所有類(lèi)在使用時(shí)無(wú)需給出明確的包標(biāo)識(shí)符:<%@pageimport="java.uti1.*,cn.foololdfat.*"%>?import是page的屬性中惟一允許在同一文檔中多次出現(xiàn)的屬性。盡管page指令可以出現(xiàn)在文檔中的任何地方,但一般不是將import語(yǔ)句放在文檔頂部附近,就是放在相應(yīng)的包首次使用之前。2.2contentType和pageEncoding屬性?contentType屬性設(shè)置Content-Type響應(yīng)報(bào)頭,標(biāo)明即將發(fā)送
7、到客戶(hù)程序的文檔的MIME類(lèi)型。有關(guān)MIME類(lèi)型的更多信息,參見(jiàn)JavaWeb開(kāi)發(fā)(5)HTTP響應(yīng)報(bào)頭。使用contentType屬性時(shí),可以采用下面兩種形式:<%@pagecontentType="MIME-TYPE"%><%@pagecontentType="MIME-Type;charset=Character-Set"%>例如,指令<%@pagecontentType="application/vnd.ms-excel"%>和下面的scriptlet所起到的作用基木相同<%responce.se
8、tContentType("application/vnd.ms-excel");%>兩種形式的第一點(diǎn)不同是,response.setContentType使用明確的Java代碼(這是一些開(kāi)發(fā)人員力圖避免使用的方式),而page指令只用到JSP語(yǔ)法。第二點(diǎn)不同是,指令被特殊處理,它們不是在出現(xiàn)的位置直接成為_(kāi)jspService代碼。這意味著response.setContentType能夠有條件地調(diào)用,而page指令不能。條