第5章 JSP語法基礎(chǔ)_第1頁
第5章 JSP語法基礎(chǔ)_第2頁
第5章 JSP語法基礎(chǔ)_第3頁
第5章 JSP語法基礎(chǔ)_第4頁
第5章 JSP語法基礎(chǔ)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1第五章

JSP語法基礎(chǔ)2本節(jié)內(nèi)容JSP注釋JSP腳本元素JSP指令元素JSP動作元素3JSP的組成:

傳統(tǒng)的html文件加入Java程序片斷(scriptlet)和JSP標(biāo)記(tag)。45.1JSP注釋注釋有兩方面的作用:一個作用是作為提示,讓人可以從注釋信息中了解某段程序的功能或設(shè)計思想,在閱讀/編寫程序時提供參考信息;另一個作用是將未完成的或有錯誤的某個程序塊通過改為注釋而隱藏起來,使其暫時不參與程序的執(zhí)行,這種方式也適用于程序調(diào)試,即將調(diào)試時編寫的調(diào)試語句作為注釋隱藏起來。5JSP中的注釋可以分為兩類:輸出到客戶端的注釋

<!—comment[<%=expression%>]-->

注:Jsp中可以進(jìn)行動態(tài)注釋。其中的內(nèi)容可以是表達(dá)式、腳本片斷在服務(wù)器端的JSP注釋

<%----%>注:在服務(wù)器端可見,對于客戶端隱藏。65.1.3案例拓展例5-1testQuote.jsp<%@pagelanguage="java"%><html><head><title>例子3-2</title></head><body><h2>隱藏批注示例</h2><%--這是一個隱藏批注,不會顯示在客戶端--%></body></html>75.2JSP腳本元素5.2.1聲明5.2.2表達(dá)式5.2.3腳本程序85.2.1聲明在JSP中使用的變量和方法時:必須先進(jìn)行聲明。在聲明元素中聲明的變量和方法,將在JSP頁面初始化時進(jìn)行初始化。JSP中的聲明,用于聲明JSP程序中使用的變量、方法等,其聲明方式與Java相同(因為聲明最終將被發(fā)送到服務(wù)器端作為Java語句解釋),其語法格式為:9JSP聲明的語法格式:<%!declaration;[declaration;]……%>使用此種方法在JSP中對變量和方法進(jìn)行聲明,可以一次聲明多個變量或者多個方法,只要最后以“;”結(jié)尾即可。每個聲明僅在當(dāng)前的JSP頁面中有效。JSP腳本元素10例1:變量的聲明<%!inti=0;%>上面的語句聲明了一個int(整型)變量i,并賦初始值為0。

11例2:方法的聲明

<%!publicStringfun(inti){

…}%>說明:聲明了名為fun的方法。該方法是公開的。參數(shù):int類型,返回值類型:字符串。125.2.2表達(dá)式表達(dá)式用于將JSP內(nèi)容轉(zhuǎn)換為字符串以便于包含在頁面的輸出中。表達(dá)式在運行后被自動轉(zhuǎn)化為字符串,然后插入到這個表達(dá)式在JSP文件中的位置顯示。13<%=expression%>

expression部分是表達(dá)式的內(nèi)容,它是一個有計算結(jié)果的JSP表達(dá)式。注意:表達(dá)式一定要有一個可以輸出的值,如數(shù)學(xué)計算式子、有返回值的函數(shù)、變量等。不能使用分號“;”來作為表達(dá)式的結(jié)束符號,但是同樣的表達(dá)式用在聲明中就需要用分號來結(jié)尾表達(dá)式元素能夠包括任何在Java中有效的表達(dá)式表達(dá)式的格式14例:<%=n%>//顯示變量n的值<b><%=newDate()%></b>//粗體字顯示當(dāng)前時間155.2.3腳本程序在JSP中稱符合Java語言規(guī)范的程序片斷為程序段,一般把它包括在“<%%>”之間,其基本語法為:

<%codefragment%>程序段也可以用于JSP變量和方法的聲明、顯示表達(dá)式以及調(diào)用JavaBean等。JSP程序段是完全符合Java語法的,在實際運行時會被轉(zhuǎn)換成Servlet。16腳本片斷能包含:多個JSP語句、方法、變量和表達(dá)式。例:

<body><!–聲明Date型變量d,并設(shè)置初始值為當(dāng)前時間--><%!Dated=newDate();%><!--從下一行開始JSP腳本代碼--><% //輸出當(dāng)前時間

out.println("現(xiàn)在時間是"); out.println(d);%></body>17例:<body><!--創(chuàng)建Date型變量d,并設(shè)置初始值為當(dāng)前時間--><%!Dated=newDate();%><!--下一行通過表達(dá)式輸出變量d--><fontface=“宋體”color=“red”>現(xiàn)在時間是<%=d%></font></body>185.2.4案例拓展例5-3,5-4195.3JSP指令元素指令(Directives)主要用來提供整個JSP網(wǎng)頁相關(guān)的信息,并且用來設(shè)定JSP網(wǎng)頁的相關(guān)屬性,例如:網(wǎng)頁的編碼方式、語法、信息等。起始符號為:<%@終止符號為:%>20指令元素的一般形式如下:<%@directive[attr="value"]%>

其中,directive是指令名稱,

attr是指令的屬性,屬性可以有多個,

value是屬性的取值。21JSP中的指令有:。page:描述與頁面相關(guān)的指示信息,include:用于包含文件,taglib:用于指示JSP頁面所使用的標(biāo)記庫JSP2.0加入表達(dá)式語言。簡化JSP開發(fā)。225.3.1Page指令

定義JSP文件中的全局屬性,描述與頁面相關(guān)的指示信息。language、import、contentType、session、buffer、auotFlush、isThreadSafe、info

23 <%@page%>指令作用于整個JSP頁面,包括靜態(tài)的包含文件;但是<%@page%>指令不能作用于動態(tài)的包含文件,比如

<jsp:include>。page指令詳說24page指令詳說可以在一個頁面中用上多個“<%@page%>”指令,但是其中的屬性只能用一次,不過也有例外,那就是import屬性。因為import屬性和Java中的import語句類似(參照J(rèn)avaLanguage,import語句引入的是Java語言中的類),所以此屬性就能多用幾次。25page指令詳說無論把<%@page%>指令放在JSP的文件的哪個地方,它的作用范圍都是整個JSP頁面。為了增強(qiáng)JSP程序的可讀性,以及好的編程習(xí)慣,最好還是把它放在JSP文件的頂部。26

page指令可以指定到何處去查找起支持作用的Java類或包。例如:

<%@pageimport="java.util.Date"%>page指令也可以在出現(xiàn)Java運行錯誤時,指示將用戶導(dǎo)向何處。例如:

<%@pageerrorPage="errorPage.jsp"%>page指令詳說27page指令的一般語法格式:<%@page[language="java"][extends="package.class"][import="{package.class|package.*},..."][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][isThreadSafe="true|false"][info="text"]28[errorPage="relativeURL"][contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]%>29屬性說明。(1)language=“java”

聲明腳本語言的種類,目前只能用"java"。(2)extends

定義了由JSP頁面產(chǎn)生的servlet的父類。一般來說,這個屬性不會用到,建議初學(xué)者先不去使用它。Page指令30(3)import="{package.class|package.*},..."

需要導(dǎo)入的Java核心包的列表,這些包作用于程序段、表達(dá)式、以及聲明。下面的包在JSP編譯時已經(jīng)導(dǎo)入了,所以就不需要再指明了:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*

31例如:<%@pageimport="java.util.*,java.io.*"%>或者:<%@pageimport="java.util.*"%><%@pageimport="java.io.*"%>32(4)session當(dāng)前頁面是否加入會話期間的管理。其缺省值為true,表明內(nèi)建對象session存在。如果沒有session對象,則會新建一個,由session來管理會話。如果設(shè)session屬性值為false,則內(nèi)建對象session不存在,這樣頁面中任何使用到session的語句都會產(chǎn)生編譯錯誤。33(5)buffer決定輸出流(out對象)是否需要緩沖區(qū)。缺省值是8KB,也可以設(shè)置為none(沒有緩沖區(qū))或所指定大小的緩沖區(qū)。例如:

<%@pagebuffer="12kb"%>

指定輸出流緩沖區(qū)為12KB。buffer屬性通常與autoFlush屬性一起使用。34(6)autoFlushautoFlash屬性用于指定是否自動刷新輸出緩沖,如果設(shè)成true,則當(dāng)輸出緩沖區(qū)滿的時候,自動刷新緩沖區(qū)而不是拋出一個異常,缺省值為true。注意:同時設(shè)置autoFlush為false和buffer為

none是不合法的,編譯時將會出錯。35(7)isThreadSafe指示JSP引擎,網(wǎng)頁在處理對象存取時是否要引入ThreadSafe(線程保護(hù))機(jī)制。缺省值為true,此時,如果多個客戶向JSP引擎發(fā)送請求,就可以同時被處理。這時JSP程序員要處理同步時的共享狀態(tài),以保證同步確實是安全的。如果isThreadSafe被設(shè)成false,則采用單線程模式控制客戶端訪問該頁面。36(8)info設(shè)置頁面的說明信息文字。可以通過頁面的Servlet.getServletInfo(

)方法訪問該信息。例如:

<%@pageinfo="JSP教程"%>37(9)ErrorPage指示一個JSP文件的相對路徑,以便在頁面出錯時,轉(zhuǎn)到這個JSP文件來進(jìn)行處理。需要將這個JSP文件的isErrorPage屬性設(shè)為true。當(dāng)ErrorPage屬性被設(shè)置后,JSP網(wǎng)頁中的異常仍然會產(chǎn)生,只不過此時捕捉到的異常將不由當(dāng)前網(wǎng)頁進(jìn)行處理,而是由ErrorPage屬性所指定的網(wǎng)頁去進(jìn)行處理。38(10)isErrorPage指示一個頁面是否為錯誤處理頁面。設(shè)置為true時,JSP頁面中的內(nèi)建對象exception將被定義,以處理該頁面所產(chǎn)生的錯誤。缺省值為false,此時將不能使用內(nèi)建對象exception來處理異常,否則將產(chǎn)生編譯錯誤。39(11)ContentType用于設(shè)置JSP文件和最終文件的MIME類型和字符集的類型。必須在文件的頂部、任何一個其他字符在文件中出現(xiàn)之前??捎玫腗IME類型有text/plain、text/html、text/html和image/gif、image/jpeg等。ContentType屬性缺省值為

“text/html;charset=ISO8859_1”。

40例如:<%@pagecontentType="text/html;charset=gb2312"%>上面語句設(shè)置MIME類型為text/html,網(wǎng)頁所用字符集為簡體中文(國標(biāo)碼gb2312)。在JSP中,客戶端和服務(wù)器端的中文顯示需要使用字符集gb2312,而HTTP傳輸編碼用ISO8859_1字符集。41例:C:\Tomcat5.0\webapps\jspex\4\4-1\page.jsp<%@pagelanguage="java"import="java.util.Date"session="true" buffer="12kb"autoFlush="true"info="atestdirectivejsppage" isErrorPage="false"contentType="text/html;charset=gb2312"%><%@pageerrorPage="error.jsp"%><html><body><h1>使用page指令的測試頁面</h1><%=newjava.util.Date().toLocaleString()%>使用表達(dá)式語言:\${4>3}:${4>3}</body></html>425.3.2Include指令 include指令:向當(dāng)前頁面內(nèi)靜態(tài)嵌入一個文件的內(nèi)容。<%@includefile="文件名"%>語法格式如下:<%@includefile="relativeURL"%>或<%@includefile="相對位置"%>43包含的文件的路徑名:一般來說是指相對路徑。如果這個路徑以“/”開頭,那么這個路徑主要是參照相對于包含這個JSP文件的Web應(yīng)用程序的根目錄,如果路徑是以文件名或目錄名開頭,那么這個路徑就是正在使用的JSP文件的當(dāng)前路徑。44例5-6Include.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>例子5-6Include.jsp</title></head><body><h2>include指令</h2><%@includefile="Hello.html"%><%out.println("歡迎大家進(jìn)入JSP的世界");%></body></html>455.3.3Taglib指令

taglib指令是JSP1.1新增進(jìn)來的功能,能夠讓用戶自定義新的標(biāo)簽。465.3.4案例拓展在頁面中顯示日期例5-7Date.jsp<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.Date"%><html><head><title>例子5-7Date.jsp</title></head><body><h2>使用java.util.Date顯示目前時間</h2><%Datedate=newDate();out.println("現(xiàn)在時間:"+date);%></body></html>475.4JSP動作元素

5.4.1Include動作

5.4.2forward動作5.4.3param動作5.4.4plugin動作485.4.1Include動作<jsp:include>元素允許你包含動態(tài)和靜態(tài)文件,這兩種產(chǎn)生的結(jié)果是不盡相同的。如果包含進(jìn)來的只是靜態(tài)文件,那么只是把靜態(tài)文件的內(nèi)容加到JSP網(wǎng)頁中;如果包含進(jìn)來的為動態(tài)文件,那么這個被包含的文件也會被JSPContainer編譯執(zhí)行。49<jsp:include>的語法:<jsp:includepage="{urlSpec|<%=expression%>}"flush="true|false"/>或<jsp:includepage="{urlSpec|<%=expression%>}"flush="true|false"><jsp:paramname="PN"value="{PV|<%=expression%>}"/>*</jsp:include>50說明:<jsp:include>有兩個屬性:page和flush。page:可以代表一個相對路徑,即你所要包含進(jìn)來的文件位置或是經(jīng)過表達(dá)式所運算出的相對路徑。flush:接受的值為boolean,假若為true,緩沖區(qū)滿時,將會被清空。flush的默認(rèn)值為false。51例子5-8top.html<html><head><title>《JSP程序設(shè)計》網(wǎng)站</title></head><body><palign="center"><b><fontsize="5">《JSP程序設(shè)計》網(wǎng)站</font></b></p>bottom.html<hr><palign="center"><fontsize="3">@中國鐵道出版社版權(quán)所有2004-2008</font><br><fontsize="3">制作人:于靜</font><br><fontsize="3">聯(lián)系方式:qzforyou@163.com</font><br></body></html>includeSample.jsp<%@pagecontentType="text/html;charset=gb2312"%><%@includefile="top.html"%><palign="center"><%out.println("實用、適用,更加方便教學(xué)的使用是本教材永遠(yuǎn)不變的目標(biāo)!");%></p><%@includefile="bottom.html"%>525.4.2forward動作<jsp:forward>:將客戶端所發(fā)出來的請求,從一個JSP網(wǎng)頁轉(zhuǎn)交給另一個JSP網(wǎng)頁。不過有一點要特別注意,<jsp:forward>標(biāo)簽之后的程序?qū)⒉荒軋?zhí)行。<jsp:forward>的語法:<jsp:forwardpage={"relativeURL"|"<%=expression%>"}/>或<jsp:forwardpage={"relativeURL"|"<%=expression%>"}><jsp:paramname="PN"value="{PV|<%=expression%>}"/>*</jsp:forward>53例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論