第2章 JSP語法最終版_第1頁
第2章 JSP語法最終版_第2頁
第2章 JSP語法最終版_第3頁
第2章 JSP語法最終版_第4頁
第2章 JSP語法最終版_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章JSP語法主要內(nèi)容JSP頁面的基本結(jié)構(gòu)聲明變量和定義方法Java程序片Java表達式JSP指令標(biāo)記JSP動作標(biāo)記難點Java程序片JSP動作標(biāo)記關(guān)鍵實踐消費總和聽英語2.1JSP頁面的基本結(jié)構(gòu)●一個JSP頁面可由5種元素組合而成(1)普通的HTML標(biāo)記和JavaScript標(biāo)記。(2)JSP標(biāo)記,如指令標(biāo)記、動作標(biāo)記。(3)變量和方法的聲明。(4)Java程序片。(5)Java表達式?!裨怼镆粋€JSP頁面被第一次請求執(zhí)行時,Tomcat服務(wù)器首先將JSP頁面文件轉(zhuǎn)譯成一個Java文件,再將這個Java文件編譯生成字節(jié)碼文件,然后通過執(zhí)行字節(jié)碼文件響應(yīng)用戶的請求?!锂?dāng)多個用戶請求一個JSP頁面時,Tomcat服務(wù)器為每個用戶啟動一個線程,該線程負責(zé)執(zhí)行常駐內(nèi)存的字節(jié)碼文件來響應(yīng)相應(yīng)用戶的請求。這些線程由Tomcat服務(wù)器來管理,將CPU的使用權(quán)在各個線程之間快速切換,以保證每個線程都有機會執(zhí)行字節(jié)碼文件。2.1JSP頁面的基本結(jié)構(gòu)●字節(jié)碼的任務(wù)★把JSP頁面中普通的HTML標(biāo)記和JavaScript標(biāo)記,交給用戶端瀏覽器執(zhí)行顯示?!颙SP標(biāo)記、方法的定義、Java程序片由服務(wù)器負責(zé)處理和執(zhí)行,將需要顯示的結(jié)果發(fā)送給用戶端瀏覽器?!颙ava表達式由服務(wù)器負責(zé)計算,并將結(jié)果轉(zhuǎn)化為字符串,然后交給用戶端瀏覽器負責(zé)顯示。example2_1.jsp頁面包含了5種元素。例子2_1example2_1.jsp2.2聲明變量和定義方法●<%!….%>在<%!和%>標(biāo)記符號之間聲明變量,定義方法以及定義類。

<%!和%>標(biāo)記符號的內(nèi)容習(xí)慣上放在JSP頁面指令之后,<HTML>之前,也可以寫在<HTML>與</HTML>之間?!?lt;%!和%>之間聲明的變量在整個JSP頁面內(nèi)都有效,與標(biāo)記符在JSP頁面中所在的書寫位置無關(guān),但習(xí)慣上把<%!、%>標(biāo)記符寫在JSP頁面的前面?!鰧τ谠凇?lt;%!”和“%>”標(biāo)記符號之間定義方法,可以在Java程序片中調(diào)用該方法。方法內(nèi)聲明的變量只在該方法內(nèi)有效,當(dāng)方法被調(diào)用時,方法內(nèi)聲明的變量被分配內(nèi)存,方法被調(diào)用完畢即可釋放這些變量所占的內(nèi)存?!鰧τ谠凇?lt;%!”和“%>”標(biāo)記符號之間定義類,可以在Java程序片中使用該類創(chuàng)建對象?!颰omcat服務(wù)器將JSP頁面轉(zhuǎn)譯成Java文件時,將“<%!”、“%>”標(biāo)記符之間聲明的變量作為類的成員變量,這些變量占有的內(nèi)存空間直到Tomcat服務(wù)器關(guān)閉才釋放?!锂?dāng)多個用戶請求一個JSP頁面時,Tomcat服務(wù)器為每個用戶啟動一個線程,這些線程由Tomcat服務(wù)器來管理,這些線程共享JSP頁面的成員變量,因此任何一個用戶對JSP頁面成員變量操作的結(jié)果,都會影響到其他用戶。2.2聲明變量和定義方法●<%!….%>例子2_2利用成員變量被所有用戶共享這一性質(zhì),實現(xiàn)了一個簡單的計數(shù)器。例子2_2example2_2.jsp例子2_3在“<%!”和“%>”之間定義了兩個方法multi(intx,inty)和div(intx,inty),然后在程序片中調(diào)用這兩個方法。在“<%!”和“%>”之間定義了一個Circle類,然后在程序片中使用該類創(chuàng)建對象,計算了圓的面積。例子2_3example2_3.jsp2.3 Java程序片<%……%>●可以在<%和%>之間插入Java程序片。●一個JSP頁面可以有許多程序片,這些程序片將被Tomcat服務(wù)器按順序執(zhí)行?!裨诔绦蚱新暶鞯淖兞糠Q作JSP頁面的局部變量。局部變量的有效范圍與其聲明的位置有關(guān),即局部變量在JSP頁面后繼的所有程序片以及表達式部分內(nèi)都有效?!霎?dāng)多個用戶請求一個JSP頁面時,Tomcat服務(wù)器為每個用戶啟動一個線程,該線程負責(zé)執(zhí)行字節(jié)碼文件響應(yīng)用戶的請求。Tomcat服務(wù)器使用多線程來處理程序片.2.3 Java程序片<%……%>★操作JSP頁面的成員變量。Java程序片中操作的成員變量是各個線程(用戶)共享的變量,任何一個線程對JSP頁面成員變量操作的結(jié)果,都會影響到其他線程?!镎{(diào)用JSP頁面的方法。

Java程序片中可以出現(xiàn)方法調(diào)用語句,所調(diào)用的方法必須是JSP頁面曾定義的方法。★操作局部變量。當(dāng)一個線程享用CPU資源時,Tomcat服務(wù)器讓該線程執(zhí)行Java程序片,這時,Java程序片中的局部變量被分配內(nèi)存空間,當(dāng)輪到另一個線程享用CPU資源時,Tomcat服務(wù)器讓該線程再次執(zhí)行Java程序片,那么,Java程序片中的局部變量會再次分配內(nèi)存空間。也就是說Java程序片已經(jīng)被執(zhí)行了兩次,分別運行在不同的線程中,即運行在不同的時間片內(nèi)。運行在不同線程中的Java程序片的局部變量互不干擾,即一個用戶改變Java程序片中的局部變量的值不會影響其他用戶的Java程序片中的局部變量。當(dāng)一個線程將Java程序片執(zhí)行完畢,運行在該線程中的Java程序片的局部變量釋放所占的內(nèi)存。2.3 Java程序片<%……%>例子2_4中,通過synchronized方法操作一個成員變量來實現(xiàn)一個簡單的計數(shù)器。例子2_4example2_4.jsp2.3 Java程序片<%……%>■可以將一個Java程序片分割成幾個Java程序片,然后在這些Java程序片之間再插入其他標(biāo)記元素。在程序片中插入HTML中的標(biāo)記的技巧對于靈活顯示數(shù)據(jù)是非常重要的。例子2_5獲得一個7至19之間的隨機數(shù),如果獲得的數(shù)小于或等于13就顯示一幅小學(xué)生的圖像,否則顯示一幅中學(xué)生的圖像。顯示圖像需要在程序片之間插入用于顯示圖像的<imagesrc=圖像的URL>文字說明</image>的HTML標(biāo)記例子2_5example2_5.jsp2.4 Java表達式<=%……%>可以在<%=和%>之間插入一個可求值的表達式(注意:不可插入語句,<%=是一個完整的符號,“<%”和“=”之間不要有空格)?!锉磉_式的值由服務(wù)器負責(zé)計算,并將計算結(jié)果用字符串形式發(fā)送到用戶端顯示?!颙ava表達式可以寫在<HTML>之前,也可以寫在<HTML>和</HTML>之間或</HTML>之后。●在JSP頁面中,表達式的值被表示成一個字符串的形式,即Tomcat服務(wù)器將表達式的結(jié)果轉(zhuǎn)換成字符串,然后發(fā)送給用戶的瀏覽器。因此,在編寫JSP頁面時,要把Java表達式按普通的文本來使用。例子2_6計算幾個表達式的值例子2_6example2_6.jsp2.5 JSP中的注釋<!--……-->HTML注釋:在標(biāo)記符號“<!--”和“-->”之間加入注釋內(nèi)容:<!--注釋內(nèi)容-->JSP引擎把HTML注釋交給用戶,因此用戶通過瀏覽器查看JSP頁面的源文件時,能夠看到HTML注釋。注釋可以增強JSP頁面的可讀性,使JSP頁面易于維護。JSP頁面中的注釋可分為兩種。<%--……--%>

JSP注釋:在標(biāo)記符號“<%--”和“--%>”之間加入注釋內(nèi)容:<%--注釋內(nèi)容--%>Tomcat服務(wù)器忽略JSP注釋,即在編譯JSP頁面時忽略JSP注釋。例子2_7使用了HTML和JSP注釋例子2_7example2_7.jsp2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記page指令用來定義整個JSP頁面的一些屬性和這些屬性的值。<%@page屬性1="屬性1的值"%><%@page屬性2="屬性2的值"%>……<%@page屬性n="屬性n的值"%>也可以用一個page指令指定多個屬性的值,如:<%@page屬性1="屬性1的值"屬性2="屬性2的值"……%>page指令的作用對整個JSP頁面有效,與其書寫的位置無關(guān)。習(xí)慣上把page指令寫在JSP頁面的最前面。page指令標(biāo)記可以指定屬性:contentType、import、language、session、buffer、auotFlush、isThreadSafe、pageEncoding、inform的值。2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(1)contentType屬性例如

<%@pagecontentType="text/html"%>JSP頁面設(shè)置響應(yīng)的MIME(MultipurposeInternetMailExtention)類型,即設(shè)置contentType屬性的值。contentType屬性值確定JSP頁面響應(yīng)的MIME類型。屬性值的一般形式是:"MIME類型"瀏覽器啟用HTML解析器來解析執(zhí)行所接收到的信息。如果希望用戶的瀏覽器啟用本地的MS-Word應(yīng)用程序來解析執(zhí)行收到的信息,就可以如下設(shè)置contentType屬性的值:<%@pagecontentType="application/msword"%>2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(1)contentType屬性■可以使用page指令為contentType屬性指定的值有:text/html、text/plain、image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/x-shockwave-flash、application/vnd.ms-powerpoint、application/vnd.ms-excel、application/msword等■page指令只能為contentType指定一個值,不允許兩次使用page指令給contentType屬性指定不同的屬性值?!鲇胮age指令為contentType指定一個值的同時,也可以為contentType的附加屬性charset指定一個值(默認值是iso-8859-1),例如:<%@pagecontentType="text/html;charset=gb2312"%>contentType的附加屬性charset的值是通知用戶瀏覽器用怎樣的編碼解析收到的字符,當(dāng)JSP頁面用page指令指定設(shè)置charset的值是gb2312時,瀏覽器會將編碼切換成gb2312。但是,如果JSP頁面用page指定了JSP的頁面本身的編碼,例如:<%@pagepageEncoding="utf-8"%>,那么charset的值和JSP的頁面編碼保持一致,即也是utf-8(目前的瀏覽器都支持utf-8編碼,所以一般不需要再指定charset的值,使其和JSP的頁面編碼保持一致即可)。2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(1)contentType屬性例子2_8中example2_8.jsp頁面使用page指令設(shè)置contentType屬性的值是"image/jpeg",當(dāng)用戶請求example2_8.jsp頁面時,用戶的瀏覽器將啟用圖形解碼器來解析執(zhí)行收到的信息。例子2_8example2_8.jsp2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(2)pageEncoding屬性只能為pageEncoding指定一個值,不允許兩次使用page指令給pageEncoding屬性指定不同的或相同的屬性值。例如:<%@pagepageEncoding="utf-8"%>那么保存JSP頁面應(yīng)當(dāng)將“編碼”選擇為“utf-8”(3)

language屬性language屬性定義JSP頁面使用的腳本語言,該屬性的值目前只能取"java"。為language屬性指定值的格式是:<%@pagelanguage="java"%>language屬性的默認值是"java",即如果在JSP頁面中沒有使用page指令指定該屬性的值的,那么,JSP頁面默認有如下的page指令:<%@pagelanguage="java"%>2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(4)import屬性(5)

session屬性該屬性的作用是為JSP頁面引入Java運行環(huán)境提供的包中的類。例如:<%@pageimport="java.io.*","java.time.LocalDate"%>JSP頁面默認import屬性已經(jīng)有如下的值:"java.lang.*"、"javax.servlet.*"、"javax.servlet.jsp.*"、"javax.servlet.http.*"。<%@pageimport="java.util.*"%><%@pageimport="java.io.*"%>session屬性用于設(shè)置是否需要使用內(nèi)置的session對象。session的屬性值可以是true或false。session屬性默認的屬性值是true。2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(6)buffer屬性(7)

autoFlush屬性內(nèi)置輸出流對象out負責(zé)將服務(wù)器的某些信息或運行結(jié)果發(fā)送到用戶端顯示。buffer屬性用來指定out設(shè)置的緩沖區(qū)的大小或不使用緩沖區(qū)。例如:<%@pagebuffer="24kb"%>buffer屬性的默認值是8kb。autoFlush可以取值true或false。autoFlush屬性的默認值是true。(8)isThreadSafe屬性isThreadSafe的屬性值可取true或false。isThreadSafe屬性值為true時,CPU的使用權(quán)在各個線程間快速切換.isThreadSafe屬性值設(shè)置成false時,該JSP頁面同一時刻只能響應(yīng)一個用戶的請求,其他用戶須排隊等待。也就是說,CUP要保證一個線程將JSP頁面執(zhí)行完畢才會把CPU使用權(quán)切換給其他線程。2.6 JSP指令標(biāo)記2.6.1page指令標(biāo)記(9)info屬性info屬性的屬性值是一個字符串,其目的是為JSP頁面準(zhǔn)備一個常用但可能要經(jīng)常修改的字符串。例如,<%@pageinfo="wearestudents"%>可以在JSP頁面中使用方法:getServletInfo();獲取info屬性的屬性值。例子2_9使用getServletInfo()方法獲取info的屬性值例子2_9example2_9.jsp2.6 JSP指令標(biāo)記2.6.2include指令標(biāo)記如果需要在JSP頁面內(nèi)某處整體嵌入一個文件,就可以考慮使用include指令標(biāo)記,其語法格式如下:<%@includefile="文件的URL"%>■嵌入的文件的編碼必須和當(dāng)前JSP頁面一致,比如二者都是utf-8編碼?!鏊^靜態(tài)嵌入,就是當(dāng)前JSP頁面和嵌入的文件合并成一個新的JSP頁面,然后Tomcat服務(wù)器再將這個新的JSP頁面轉(zhuǎn)譯成Java文件。因此,嵌入文件后,必須保證新合并成的JSP頁面符合JSP語法規(guī)則,即能夠成為一個JSP頁面文件?!鰅nclude指令可以實現(xiàn)代碼的復(fù)用。比如,每個JSP頁面上都可能都需要一個導(dǎo)航條,以便用戶在各個JSP頁面之間方便地切換,那么每個JSP頁面都可以使用include指令在頁面的適當(dāng)位置整體嵌入一個相同的文件?!鲈试S被嵌入的文件使用page指令指定contentType屬性的值,但指定的值要與嵌入該文件的JSP頁面中的page指令指定的contentType屬性的值相同。2.6 JSP指令標(biāo)記2.6.2include指令標(biāo)記例子2_10中兩個JSP頁面使用include指令標(biāo)記嵌入同一個文本文件:ok.txt,該文本文件的內(nèi)容是關(guān)于這兩個JSP頁面之間(北京大學(xué)與清華大學(xué)之間)的超鏈接。例子2_10中的ok.txt文件用utf-8編碼保存。例子2_10ok.txtexample2_10_a.jspexample2_10_b.jsp2.7 JSP動作標(biāo)記動作標(biāo)記是一種特殊的標(biāo)記,它影響JSP運行時的功能。2.7.1include動作標(biāo)記include動作標(biāo)記語法格式為:<jsp:includepage="文件的URL"/>或<jsp:includepage="文件的URL">param子標(biāo)記</jsp:include>include動作標(biāo)記告訴JSP頁面動態(tài)包含一個文件,即JSP頁面運行時才將文件加入。與靜態(tài)嵌入文件的include指令標(biāo)記不同,當(dāng)Tomcat服務(wù)器根據(jù)JSP頁面產(chǎn)生成Java文件時,不把JSP頁面中動作指令include所包含的文件與原JSP頁面合并為一個新的JSP頁面,而是告訴Java解釋器,這個文件在JSP運行(Java文件的字節(jié)碼文件被加載執(zhí)行)時才包含進來。如果包含的文件是普通的文本文件,就將文件的內(nèi)容發(fā)送到用戶端,由用戶端的瀏覽器負責(zé)顯示;如果包含的文件是JSP文件,Tomcat服務(wù)器就執(zhí)行這個文件,然后將執(zhí)行的結(jié)果發(fā)送到用戶端,并由用戶端的瀏覽器負責(zé)顯示這些結(jié)果。2.7 JSP動作標(biāo)記動作標(biāo)記是一種特殊的標(biāo)記,它影響JSP運行時的功能。2.7.2param動作標(biāo)記例子2_11中,example2_11.jsp使用include動作標(biāo)記加載JSP文件triangle.jsp,triangle.jsp頁面保存

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論