資源描述:
《第2章 JSP語法(JSP實(shí)用教程第3版).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、JSP實(shí)用教程(第三版)配合《JSP實(shí)用教程(第三版)》例子源代碼一起使用PowerPoint制作張躍平耿祥義第2章JSP語法2021/7/172本章主要內(nèi)容2.1JSP頁面的基本結(jié)2.2變量和方法的聲明2.3Java程序片2.4Java表達(dá)式2.5JSP中的注釋2.6JSP指令標(biāo)記2.7JSP動(dòng)作標(biāo)記2021/7/173§2.1JSP頁面的基本結(jié)構(gòu)在傳統(tǒng)的HTML頁面文件中加入Java程序片和JSP標(biāo)簽,就構(gòu)成了一個(gè)JSP頁面。JSP頁面可由5種元素組合而成:①普通的HTML標(biāo)記符;②JSP標(biāo)記,如指令標(biāo)記、動(dòng)作標(biāo)記;③變量和方法的聲明;④Java程序片;⑤Java表達(dá)式2021/7/17
2、4當(dāng)服務(wù)器上的一個(gè)JSP頁面被第一次請(qǐng)求執(zhí)行時(shí),服務(wù)器上的JSP引擎首先將JSP頁面文件轉(zhuǎn)譯成一個(gè)Java文件,再將這個(gè)Java文件編譯生成字節(jié)碼文件,然后通過執(zhí)行字節(jié)碼文件響應(yīng)用戶的請(qǐng)求。當(dāng)多個(gè)用戶請(qǐng)求一個(gè)JSP頁面時(shí),JSP引擎為每個(gè)用戶啟動(dòng)一個(gè)線程,該線程負(fù)責(zé)執(zhí)行常駐內(nèi)存的字節(jié)碼文件來響應(yīng)相應(yīng)用戶的請(qǐng)求。這些線程由Tomcat服務(wù)器來管理,將CPU的使用權(quán)在各個(gè)線程之間快速切換,以保證每個(gè)線程都有機(jī)會(huì)執(zhí)行字節(jié)碼文件。2021/7/175例子2_1Tomcat服務(wù)器的webapps目錄的子目錄都可以作為一個(gè)Web服務(wù)目錄。本章在webapps目錄下新建一個(gè)Web服務(wù)目錄“ch2”,除非特
3、別約定,本章例子中的JSP頁面均保存在ch2中。例子2_1中,example2_1.jsp頁面包含了5種元素(效果如圖2.1所示),其中使用HTML語言的
標(biāo)記讓網(wǎng)頁的背景是一幅圖像(需要將一幅圖像back.jpg保存在服務(wù)目錄ch2中).使用Java程序片顯示服務(wù)器端的時(shí)間,使用Java表達(dá)式顯示一些變量的值。2021/7/176§2.2變量和方法的聲明在“<%!”和“%>”標(biāo)記符號(hào)之間聲明變量和方法。2021/7/1772.2.1聲明變量在“<%!”和“%>”標(biāo)記符之間聲明變量,即在“<%!”和“%>”之間放置Java的變量聲明語句。變量的類型可以是Java語言允許的任何數(shù)據(jù)類
4、型,將這些變量稱為JSP頁面的成員變量。例如:<%!inta,b=10,c;Stringtom=null,jerry="loveJSP";Datedate;%>“<%!”和“%>”之間聲明的變量在整個(gè)JSP頁面內(nèi)都有效,與“<%!”、“%>”標(biāo)記符在JSP頁面中所在的書寫位置無關(guān)。JSP引擎將JSP頁面轉(zhuǎn)譯成Java文件時(shí),將“<%!”、“%>”標(biāo)記符之間聲明的變量作為類的成員變量,這些變量占有的內(nèi)存空間直到JSP引擎關(guān)閉才釋放。2021/7/178例子2_2當(dāng)多個(gè)用戶請(qǐng)求一個(gè)JSP頁面時(shí),JSP引擎為每個(gè)用戶啟動(dòng)一個(gè)線程,這些線程由JSP引擎來管理,這些線程共享JSP頁面的成員變量,因此任
5、何一個(gè)用戶對(duì)JSP頁面成員變量操作的結(jié)果,都會(huì)影響到其他用戶。例子2_2利用成員變量被所有用戶共享這一性質(zhì),實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的計(jì)數(shù)器,example2_2.jsp效果如圖2.2所示。2021/7/1792.2.2定義方法在“<%!”和“%>”標(biāo)記符號(hào)之間定義方法,所定義的方法在整個(gè)JSP頁面有效,可以在Java程序片中被調(diào)用。方法內(nèi)聲明的變量只在該方法內(nèi)有效,當(dāng)方法被調(diào)用時(shí),方法內(nèi)聲明的變量被分配內(nèi)存,方法被調(diào)用完畢即可釋放這些變量所占的內(nèi)存。2021/7/1710例子2_3例子2_3中,在“<%!”和“%>”之間定義了兩個(gè)方法:multi(intx,inty)和div(intx,inty),
6、然后在程序片中調(diào)用這兩個(gè)方法。example2_3.jsp效果如圖2.3所示。2021/7/1711§2.3Java程序片在“<%”和“%>”之間插入Java程序片。一個(gè)JSP頁面可以有許多程序片,這些程序片將被JSP引擎按順序執(zhí)行。程序片中聲明的變量稱為JSP頁面的局部變量。多個(gè)客戶請(qǐng)求一個(gè)JSP頁面時(shí),Java程序片將被執(zhí)行多次,分別在不同的線程中執(zhí)行。Java程序片執(zhí)行特點(diǎn)如圖2.4所示。2021/7/1712例子2_4如果一個(gè)用戶在執(zhí)行Java程序片時(shí)調(diào)用JSP頁面的方法操作成員變量,可能不希望其他用戶也調(diào)用該方法操作成員變量,以免對(duì)其產(chǎn)生不利的影響,那么就應(yīng)該將操作成員變量的方法用
7、synchronized關(guān)鍵字修飾。例子2_4中,通過synchronized方法操作一個(gè)成員變量來實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)數(shù)器。example2_4.jsp<%@pagecontentType="text/html;Charset=gb2312"%>
<%!intcount=0;//被用戶共享的countsynchronizedvoidsetCount()//synchronized修飾的方法