《講JSP語法》PPT課件.ppt_第1頁
《講JSP語法》PPT課件.ppt_第2頁
《講JSP語法》PPT課件.ppt_第3頁
《講JSP語法》PPT課件.ppt_第4頁
《講JSP語法》PPT課件.ppt_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7講 JSP語法,上節(jié)回顧,Servlet、JSP的基本結(jié)構(gòu),您是第 個訪問本站的客戶。,JSP標(biāo)記 HTML標(biāo)記符 變量和方法聲明 Java程序片 Java表達式,JSP腳本,JSP腳本是在html頁面中嵌入的一段Java代碼,語法,本節(jié)內(nèi)容,JSP標(biāo)記 變量、方法的聲明 JAVA程序片 表達式 注釋,1、JSP指令標(biāo)記。包括page指令標(biāo)記、include指令標(biāo)記和Taglib指令標(biāo)記,page 指令標(biāo)記 page 指令用來定義整個JSP頁面的一些屬性和這些屬性的值。為根據(jù)JSP頁面生成的servlet指定高層的信息能夠控制: 導(dǎo)入哪些類(import) 產(chǎn)生哪種MIME類型(conte

2、ntType) 如何處理多線程(isThreadSafe) 輸出緩沖區(qū)大小的行為(buffer auotflush,一、JSP標(biāo)記。包括指令標(biāo)記和動作標(biāo)記,page 指令的位置: page指令的作用對整個頁面有效,與其書寫的位置無關(guān),但習(xí)慣把page指令寫在JSP頁面的最前面。 page 指令的格式: 屬性值總是用單引號或引號雙號括起來,例如: 如果為一個屬性指定幾個值的話,這些值用逗號分割。如:,為import指定多個屬性值時,JSP引擎把JSP頁面轉(zhuǎn)譯成的java文件中會有如下的import語句: import java.util.*; import java.io.*; import j

3、ava.awt.*; 在一個JSP頁面中,也可以使用多個page指令來指定屬性及其值。需要注意的是:可以使用多個page指令給屬性import幾個值,但其它屬性只能使用page指令指定該屬性一個值。如:,language屬性 定義JSP頁面使用的腳本語言,該屬性的值目前只能取java。 格式: language屬性的默認值是“java”,即如果你在JSP頁面中沒有使用page指令指定該屬性的值的話,那么,JSP頁面默認有如下page指令:,import 屬性: 該屬性的作用是為JSP頁面引入Java核心包中的類,這樣就可以在JSP頁面的程序片部分、變量及函數(shù)聲明部分、表達式部分使用包中的類???/p>

4、以為該屬性指定多個值,該屬性的值可以是Java某包中的所有類或一個具體的類,例如: JSP頁面默認import屬性已經(jīng)有如下的值: java.lang.*、 javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.,contentType 屬性: 定義JSP頁面響應(yīng)的MIME類型 (Multipurpose Internet Mail Extention 多功能Internet郵件擴充服務(wù),設(shè)定某種擴展名的文件用一種應(yīng)用程序來打開的方式類型 ) 和JSP頁面字符的編碼。屬性值的一般形式是: “MIME類型”或 “MIME類型;charset

5、=編碼”。 格式: contentType 屬性的默認值是“text/html ; charset=ISO-8859-1”。 瀏覽器接收到文件后,會進入插件系統(tǒng)進行查找,查找出哪種插件可以識別讀取接收到的文件。如果瀏覽器不清楚調(diào)用哪種插件系統(tǒng),它可能會告訴用戶缺少某插件,或者直接選擇某現(xiàn)有插件來試圖讀取接收到的文件,后者可能會導(dǎo)致系統(tǒng)的崩潰。傳輸?shù)男畔⒅腥鄙費IME標(biāo)識可能導(dǎo)致的情況很難估計,因為某些計算機系統(tǒng)可能不會出現(xiàn)什么故障,但某些計算機可能就會因此而崩潰。 gb2312是中國規(guī)定的強制性的漢字編碼;iso-8859-1是在ASCII碼基礎(chǔ)上增加了其他語言和地區(qū)需要的字符的編碼集。 GB

6、K增加了繁體字庫等。 iso-8859-1是JAVA網(wǎng)絡(luò)傳輸使用的標(biāo)準(zhǔn)字符集,而gb2312是標(biāo)準(zhǔn)中文字符集,當(dāng)你作出提交表單等需要網(wǎng)絡(luò)傳輸?shù)牟僮鞯臅r候,就需要把iso-8859-1轉(zhuǎn)換為gb2312字符集顯示,否則如果按瀏覽器的gb2312格式來解釋iso-8859-1字符集的話,由于二者不兼容,所以會是亂碼,session屬性: 用于設(shè)置是否需要使用內(nèi)置的session對象。 session的屬性值可以是true或false。 格式 注意 默認為true。 如果網(wǎng)站的流量較大,可以節(jié)省服務(wù)器端的內(nèi)存。 要想真正起到作用,所有的相關(guān)網(wǎng)頁都必須這樣做,buffer屬性: 內(nèi)置輸出流對象out負

7、責(zé)將服務(wù)器的某些信息或運行結(jié)果發(fā)送到客戶端顯示,buffer屬性用來指定out設(shè)置的緩沖區(qū)的大小或不使用緩沖區(qū)。 格式 目的 指定out變量所使用的緩沖區(qū)的大小。 注意 服務(wù)器可以使用比請求的大小更大的緩沖區(qū),但不會小于所請求的大小。 默認值和系統(tǒng)相關(guān),但至少8kb。例如:,autoFlush屬性: 指定out的緩沖區(qū)被填滿時,緩沖區(qū)是否自動刷新。 格式 目的 設(shè)置如果buffer溢出,是否需要強制輸出,如果其值被定義為true(缺省值),輸出正常,如果它被設(shè)置為false,如果這個buffer溢出,就會導(dǎo)致一個意外錯誤的發(fā)生.如果你把buffer設(shè)置為none,那么你就不能把autoFlus

8、h設(shè)置為false,isThreadSafe屬性: 用來設(shè)置JSP頁面是否可多線程訪問。 格式 值為“true”(缺?。┍硎荆簩⑦M行普通的servlet處理,多個請求將被一個servlet實例并行處理,在這種情況下,編程人員同步訪問多個實例變量。 值為“false”時表示:servlet將實現(xiàn)單線程模式(SingleThreadModel),編程人員需排隊訪問。 不管請求是順序提交還是并發(fā)出現(xiàn),都將提供不同的分離的servlet實例,info 屬性: 該屬性為JSP頁面準(zhǔn)備一個字符串,屬性值是某個字符串。 格式 目的 JSP的一些信息,能夠在JSP頁面中使用getServletInfo()方法

9、獲取info屬性的屬性值。 注: 編譯時,轉(zhuǎn)譯的類是servlet的一個子類,故在JSP頁面中可以使用servlet類的getServletInfo方法,下面的例子使用getServletInfo()方法獲取info的屬性值。 誰呀? +s); ,include 指令標(biāo)記 如果需要在JSP頁面內(nèi)某處整體嵌入一個文件,就可以考慮使用這個指令標(biāo)記。該指令標(biāo)記語法格式如下: 該指令標(biāo)記的作用是在JSP頁面出現(xiàn)該指令的位置處,靜態(tài)插入一個文件。被插入的文件必須是可訪問和可使用的,即該文件必須和當(dāng)前JSP頁面在同一Web服務(wù)目錄中。所謂靜態(tài)插入,就是當(dāng)前JSP頁面和插入的部分合并成一個新的JSP頁面,然

10、后JSP引擎再將這個新的JSP頁面轉(zhuǎn)譯成Java類文件,下例在JSP頁面靜態(tài)插入一個文本文件:Hello.txt,該文本文件的內(nèi)容是:“你們好,很高興認識你們呀!”。該文本文件必須和當(dāng)前JSP頁面在同一Web服務(wù)目錄中。 E1.jsp,注:上例等價于下面的JSP文件: 你們好,很高興認識你們呀!,head.jsp: 瀏覽商品 查詢商品 去購物車 公共留言 私人留言 聯(lián)系我們 用戶注冊 用戶登錄 修改信息 回到首頁,taglib指令標(biāo)記聲明JSP文件使用了自定義的標(biāo)記,同時引用標(biāo)記庫,也指定了他們的標(biāo)記的前綴。 這里自定義的標(biāo)記含有標(biāo)記和元素之分。因為JSP文件能夠轉(zhuǎn)化為XML,所以了解標(biāo)記和元

11、素之間的聯(lián)系很重要。標(biāo)記只不過是一個在意義上被抬高了點的標(biāo)記,是JSP元素的一部分。JSP元素是JSP語法的一部分,和XML一樣有開始標(biāo)記和結(jié)束標(biāo)記。元素也可以包含其它的文本、標(biāo)記和元素。比如,一個jsp:plugin元素有開始標(biāo)記和結(jié)束標(biāo)記,同樣也可以有和元素。使用自定義標(biāo)記自定義標(biāo)記之前必須使用指令,而且你可以在一個頁面中多次使用,但是前綴只能使用一次,Taglib指令標(biāo)記(略,Taglib 指令:定義一個標(biāo)記庫以及其自定義標(biāo)記的前綴. JSP 語法: 例子: uri=“URIToTagLibrary” Uniform Resource Identifier(標(biāo)識符)根據(jù)標(biāo)記的前綴對自定義

12、的標(biāo)記進行唯一的命名,URI可以是以下內(nèi)容,Uniform Resource Locator (URL), 由 RFC 2396 定義, 查看 http:/www.hut.fi/u/jkorpela /rfc/2396/full.html Uniform Resource Name (URN), 由 RFC 2396定義一個相對或絕對的路徑。 prefix=“tagPrefix” 在自定義標(biāo)記之前的前綴,比如,在中的public,不寫public是不合法的。請不要用jsp, jspx, java, javax, servlet, sun, 和sunw做為你的前綴,2、JSP 動作標(biāo)記 動作標(biāo)記

13、是一種特殊的標(biāo)記,它影響JSP運行時的功能。 JSP動作標(biāo)記可以將代碼處理程序與特殊的JSP標(biāo)記關(guān)聯(lián)在一起。JSP動作利用XML語法格式的標(biāo)記來控制 。 一般格式: 或 指令標(biāo)記,jsp:include:在頁面被請求的時候引入一個文件。 jsp:forward:把請求轉(zhuǎn)到一個新的頁面。 jsp:param :在include和forward中設(shè)置屬性。 jsp:useBean:尋找或者實例化一個JavaBean。 jsp:setProperty:設(shè)置JavaBean的屬性。 jsp:getProperty:輸出某個JavaBean的屬性。 jsp:plugin:根據(jù)瀏覽器類型為Java插件生成

14、OBJECT或EMBED標(biāo)記,include 動作標(biāo)記 動作標(biāo)記是一種特殊的標(biāo)記,它影響JSP運行時的功能。 格式: 或 目的: 為了重用JSP,HTML,或純文本的內(nèi)容 為了能夠更新被包含的內(nèi)容,但不改變包含該內(nèi)容的那些主JSP頁面 注意:JSP內(nèi)容不能影響主頁面:只有使用被包含JSP頁面的輸出;不要忘記結(jié)尾的斜杠;可以包含WEB-INF目錄中的文件,該動作標(biāo)記告訴JSP頁面動態(tài)包含一個文件,即JSP頁面運行時才將文件加入。與靜態(tài)插入文件的include指令標(biāo)記不同,當(dāng)JSP引擎把JSP頁面轉(zhuǎn)譯成Java文件時,不把JSP頁面中動作指令include所包含的文件與原JSP頁面合并一個新的JS

15、P頁面,而是告訴Java解釋器,這個文件在JSP運行時(Java文件的字節(jié)碼文件被加載執(zhí)行)才包含進來。如果包含的文件是普通的文本文件,就將文件的內(nèi)容發(fā)送到客戶端,由客戶端負責(zé)顯示;如果包含的文件是jsp文件,JSP引擎就執(zhí)行這個文件,然后將執(zhí)行的結(jié)果發(fā)送到客戶端,并由客戶端負責(zé)顯示這些結(jié)果。 對比include指令標(biāo)記,include動作標(biāo)記可以使用param標(biāo)記靈活地處理所需要的文件,但執(zhí)行速度要慢,下面的例子動態(tài)包含兩個文件:image.html和hello.txt。hello.txt存放在Myfile文件夾中,image.html存放在當(dāng)前文件夾下。 hello.txt: 你好,祝學(xué)習(xí)

16、進步! 學(xué)習(xí)JSP要有Java語言的基礎(chǔ)。 要認真學(xué)習(xí)JSP的基本語法。 image.html:,例子E2.jsp 加載的文件: 加載的圖象:,param動作標(biāo)記 param標(biāo)記以“名字值”對的形式為其它標(biāo)記提供附加信息,這個標(biāo)記與jsp:include、jsp:forward、jsp:plugin標(biāo)記一起使用。 param動作標(biāo)記: 當(dāng)該標(biāo)記與jsp:include標(biāo)記一起使用時,可以將param標(biāo)記中的值傳遞到include指令要加載的文件中去,因此include動作標(biāo)記如果結(jié)合param標(biāo)記,可以在加載文件的過程中向該文件提供信息,E3.jsp中動態(tài)包含文件:tom.jsp,當(dāng)該文件被加

17、載時獲取param標(biāo)記中computer的值(獲取computer的值由JSP的內(nèi)置對象request調(diào)用getParameter方法完成)。 加載文件效果:,從1到的連續(xù)和是:,tom.jsp,forward 動作標(biāo)記 forward指令: 或 該指令的作用是:從該指令處停止當(dāng)前頁面的繼續(xù)執(zhí)行,而轉(zhuǎn)向其它的一個JSP頁面,例子E4.jsp 0.5) ,plugin 動作標(biāo)記 在頁面中使用普通的HTML標(biāo)記 可以讓客戶下載運行一個java applet小應(yīng)用程序,但并不是所有的客戶瀏覽器都支持java apple小程序,如果你的小應(yīng)用程序使用了 JDK1.2以后的類,那么,目前的IE5.5并不

18、支持這個Java小應(yīng)用程序。而使用plugin動作標(biāo)記可以保證客戶能執(zhí)行你的小應(yīng)用程序。 該動作標(biāo)記指示JSP頁面加載java plugin,該插件由客戶負責(zé)下載,并使用該插件來運行Java applet,Plugin 動作標(biāo)記格式: 提示信息:用來提示用戶的瀏覽器是否支持插件下載 假設(shè)有一個java applet小程序,主類字節(jié)碼文件是:B.class,該文件存放在Root下。含有plugin標(biāo)記的JSP文件也存放在Root下,當(dāng)客戶訪問E5.jsp頁面時,將導(dǎo)致登錄sun公司的網(wǎng)站下載Java plugin,出現(xiàn)客戶選擇是否下載插件的界面. Plugin tag OBJECT or EMB

19、ED not supported by browser.,useBean 動作標(biāo)記 該標(biāo)記用來創(chuàng)建并使用一個java beans,是非常重要的一個動作標(biāo)記,我們以后再詳細討論。Sun公司的倡導(dǎo)是:用HTML完成JSP頁面的靜態(tài)部分,用javabeans完成動態(tài)部分,實現(xiàn)真正意義上的靜態(tài)和動態(tài)分割,變量和方法的聲明,在“”標(biāo)記符號之間聲明變量和方法。 一、聲明變量 變量的類型可以是Java語言允許的任何數(shù)據(jù)類型。這些變量稱JSP頁面的成員變量。,之間聲明的變量在整個JSP頁面內(nèi)都有效,因為JSP引擎將JSP頁面轉(zhuǎn)譯成Java 文件時,將這些變量作為類的成員變量。這些變量的內(nèi)存空間直到服務(wù)器關(guān)閉才

20、釋放。 當(dāng)多個客戶請求一個JSP頁面時,JSP引擎為每個客戶啟動一個線程,這些線程由JSP引擎服務(wù)器來管理,這些線程共享JSP頁面的成員變量,因此任何一個用戶對JSP頁面成員變量操作的結(jié)果,都會影響到其他用戶。下例利用成員變量被所有用戶共享這一性質(zhì),實現(xiàn)了一個簡單的計數(shù)器,jsq.jsp,您是第 個訪問本站的客戶。,在處理多線程問題時,當(dāng)兩個或多個線程同時訪問同一個共享的變量,并且一個線程需要修改這個變量時,我們應(yīng)對這樣的問題作出處理,否則可能發(fā)生混亂。 在例中,可能發(fā)生兩個客戶同時請求jsq.jsp頁面。在Java語言中我們已經(jīng)知道,在處理線程同步時,可以將線程共享的變量放入一個synchr

21、onized塊,或?qū)⑿薷脑撟兞康姆椒ㄓ胹ynchronized來修飾。這樣,當(dāng)一個客戶用synchronized塊或synchronized方法操作一個共享變量時,其它線程就必須等待,直到該線程執(zhí)行完該方法或同步塊。例子jsq_synchronized.jsp對上例的改進,您是第 個訪問本站的客戶。,您是第 個訪問本站的客戶。,聲明方法 在“”之間聲明方法,該方法在整個JSP頁面有效,但是該方法內(nèi)定義的變量只在該方法內(nèi)有效。這些方法將在Java程序片中被調(diào)用,當(dāng)方法被調(diào)用時,方法內(nèi)定義的變量被分配內(nèi)存,調(diào)用完畢即刻釋放所占的內(nèi)存。當(dāng)多個客戶同時請求一個JSP頁面時,他們可能使用方法操作成員變量

22、,對這種情況應(yīng)給予注意。在例子E5.jsp中,通過synchronized方法操作一個成員變量來實現(xiàn)一個計數(shù)器,E6.jsp,您是第 個訪問本站的客戶。,數(shù)學(xué)上有一個計算 的公式: /4=1-1/3+1/5-1/7+1/9-1/11 。下例中利用成員變量被所有客戶共享這一特性實現(xiàn)客戶幫助計算 的值,即每當(dāng)客戶訪問都參與了一次 的計算。 E7.jsp:,您是第個訪問者 目前PI的計算結(jié)果是:,Java 程序片,可以在“”之間插入Java程序片。一個JSP頁面可以有許多程序片,這些程序片將被JSP引擎按順序執(zhí)行。 在一個程序片中聲明的變量稱做JSP頁面的局部變量,它們在JSP頁面內(nèi)的所有程序片部分以及表達式部分內(nèi)都有效。這是因為JSP引擎將JSP頁面轉(zhuǎn)譯成Java文件時,將各個程序片的這些變量作為類中某個方法的變量,即局部變量。利用程序片的這個性質(zhì),有時候可

溫馨提示

  • 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

提交評論