JSP運行機制與基本語法ppt課件_第1頁
JSP運行機制與基本語法ppt課件_第2頁
JSP運行機制與基本語法ppt課件_第3頁
JSP運行機制與基本語法ppt課件_第4頁
JSP運行機制與基本語法ppt課件_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 JSP運行機制與基本語法 內(nèi)容概述本章首先介紹JSP的運行機制,然后介紹JSP的基本語法,包括JSP的頁面結(jié)構(gòu)、注釋、聲明、表達式、腳本段以及JSP指令和JSP動作。4.1.1 JSP應用實例【例4.1】 在頁面上動態(tài)輸出一段文本firstjsp.jsp)。firstjsp.jsp代碼如下:第一個JSP頁面處于“”中的部分為JSP代碼 將文件firstjsp.jsp保存到Tomcat安裝目錄下的webapps/jspbasic/WebRoot目錄下,然后在IE地址欄中填入地址localhost:8080/ jspbasic/WebRoot/firstjsp.jsp則可執(zhí)行代碼。圖4.1 例4

2、.1文本輸出結(jié)果上例中看到“Hello World!”的輸出后,轉(zhuǎn)到Tomcat安裝目錄下的workCatalinalocalhost目錄,在_orgapachejsp目錄下,可以看到兩個文件:“firstjsp_jsp.java和“firstjsp_jsp.class”這兩個文件就是在我們訪問firstjsp.jsp文件時,由JSP引擎生成的4.1.2 JSP運行機制JSP是服務器端技術(shù),在服務器端,JSP引擎解釋JSP代碼,然后將結(jié)果以HTML或XML頁面形式發(fā)送到客戶端,在客戶端的用戶是看不到JSP代碼的??蛻舳薐SP容器1.請求JSP頁面5.返回響應2. 轉(zhuǎn)換(translation)

3、3. 編譯(javac)4. 執(zhí)行servlet實例class文件(.class)servlet文件(.java)JSP文件當?shù)谝淮渭虞dJSP頁面時,因為要將JSP文件轉(zhuǎn)換為Servlet類,所以響應速度較慢。當再次請求時,JSP容器就會直接執(zhí)行第一次請求時產(chǎn)生的Servlet,而不會再重新轉(zhuǎn)換JSP文件,所以其執(zhí)行速度較快。 4.1.3 JSP的特點JSP的主要特點如下:1. 把內(nèi)容的生成和顯示分離2. 生成可重用的組件3. 應用標記簡化頁面的開發(fā)4. 具有Java的特點4.2 JSP基本語法4.2.1 JSP頁面組成JSP代碼放在特定的標簽中,然后嵌入到HTML代碼中。開始標簽、結(jié)束標簽和

4、元素內(nèi)容 三部分統(tǒng)稱為JSP 元素Elements)。JSP元素可分成三種不同的類型:腳本元素Scripting)指令元素Directive)動作元素Action)腳本元素規(guī)范JSP 網(wǎng)頁所使用的Java 代碼,包括:HTML注釋、隱藏注釋、聲明、表達式和腳本段。指令元素是針對JSP引擎的,并不會直接產(chǎn)生任何看得見的輸出。包括:inc1ude指令、page指令和taglib指令。動作元素利用XML語法格式的標記來控制Servlet引擎的行為。JSP頁面JSP元素Elements模板數(shù)據(jù)Template data腳本元素Scripting)指令元素Directive)動作Action元素HTML

5、標簽JavaScript腳本CSS樣式等4.2.2注釋注釋增加了程序的可讀性與可維護性,應該養(yǎng)成寫注釋的好習慣。JSP文件的注釋有兩種:HTML注釋和隱藏注釋。HTML注釋發(fā)送到客戶端,但不在瀏覽器上顯示,在客戶端可通過查看源文件看到。語法:!-注釋-JSP注釋寫在JSP程序代碼中,不發(fā)送到客戶端語法:4.2.3聲明在JSP程序中用到的變量和方法是需要聲明的聲明的語法如下:例如:應注意的規(guī)則聲明必須以“;”結(jié)尾;可以一次聲明多個變量和方法,必須以“,”分開,以“;”號結(jié)尾。聲明的范圍通常是JSP頁面,但如果頁面中使用include指令包含其他頁面,范圍應擴展到被包含的頁面。可以直接使用在指令中

6、包含進來已經(jīng)聲明了的變量和方法,不需要重新進行聲明。一個聲明僅在一個頁面中有效。如果想每個頁面都用到一些聲明,最好把它們寫成一個單獨的文件,然后用include或jsp:inc1ude動作包含進來。4.2.4表達式 JSP的表達式是由變量、常量組成的算式,它將JSP生成的數(shù)值嵌入HTML頁面,用來直接輸出Java代碼的值。表達式的語法規(guī)則如下: 使用表達式時的注意事項:不能用一個分號(“;”)來作為表達式的結(jié)束符。“%=”是一個完整的標記,中間不能有空格。表達式元素包含任何在Java語言規(guī)范中有效的表達式。表達式可以成為其他JSP元素的屬性值。一個表達式可以由一個或多個表達式組成,按從左到右的

7、順序求值。4.2.5 JSP腳本段JSP腳本段Scriplet是一段Java代碼??梢园我庑泻戏ǖ哪_本語句,腳本段是一個代碼片斷,在服務器處理請求過程中被執(zhí)行。其語法規(guī)則如下: 4.2.6 JSP基本語法應用案例【例4.3】 根據(jù)Web服務器系統(tǒng)的時間,顯示不同時間段的問候。greeting.jsp代碼清單如下:JSP基本語法應用案例4.2.6 JSP基本語法應用案例 = 0 & hours = 12 & hours 程序運行結(jié)果如圖4.6所示。4.3 JSP指令4.3.1 JSP指令功能 JSP指令是一些特殊的JSP語句,它是為JSP引擎而設計的 他們并不直接產(chǎn)生任何可見

8、輸出,只是告訴引擎如何處理其余JSP頁面。 這些指令被括在 “”標記中。pageincludetaglib:用來定義一個標記庫以及標記的前綴。4.3.2 include指令若想在JSP網(wǎng)頁中插入其他的文件,有兩種方式:include指令jsp:include動作。include指令include指令稱為文件加載指令,可以將其他的文件插入JSP網(wǎng)頁,被插入的文件可以是JSP文件、HTML文件或者其他文本文件,但是必須保證插入后形成的新文件符合JSP頁面的語法規(guī)則。其指令形式如下:include指令只有一個屬性:file。Include指令的使用例子systemTime.html輸出系統(tǒng)的日期和時

9、間includeDirec.jsp中通過include指令將systemTime.html文件包含進來。systemTime.html代碼includeDirec.jsp代碼include指令實例現(xiàn)在的日期和時間是:4.3.3 page指令page指令稱為頁面指令幾乎在所有JSP頁面頂部都會看到page指令。page指令的語法規(guī)則page指令的常用屬性 import用來導入將要用到的一個或多個包/類page指令的常用屬性errorPage這個屬性值為一個URL路徑指向的JSP網(wǎng)頁,在指向的JSP網(wǎng)頁中處理初始JSP網(wǎng)頁上產(chǎn)生的錯誤通常在指向的JSP網(wǎng)頁上都會設置“isErrorPage=tru

10、e”。page指令的常用屬性isErrorPage這個屬性的默認值為“false”isErrorPage用來指定目前的JSP網(wǎng)頁是否是另一個JSP網(wǎng)頁的錯誤處理頁,通常與errorPage屬性配合使用。 page指令的常用屬性contentType用來指定JSP網(wǎng)頁輸出到客戶端時所用的MIME類型和字符集默認MIME類型是“text/html”,默認的字符集是“ISO-8859-1”如果想輸出簡體中文,字符集需要被設置為“gb2312”。 本卷須知在一個頁面中可以使用多個指令,分別描述不同的屬性每個屬性只能用一次,但是import指令可以多次使用。指令區(qū)分大小寫。4.3.4 taglib指令t

11、aglib指令用來定義一個標記庫以及標記的前綴,其語法規(guī)則如下:4.3.5 JSP指令應用案例【例4.5】 page指令的用法。本例包括2個文件pageDirec.jsp為主頁面,在本頁面中,通過page指令指定當頁面發(fā)生錯誤時轉(zhuǎn)向的頁面為errorPageDirec.jsp在錯誤轉(zhuǎn)向頁面通過顯示相關信息提示用戶訪問出錯。文件pageDirec.jsp代碼:page指令示例文件errorPageDirec.jsp代碼如下錯誤頁面你訪問的頁面發(fā)生了錯誤!本文件的page指令isErrorPage=true指定該文件為錯誤處理文件,只能通過其他頁面發(fā)生錯誤而轉(zhuǎn)向它來運行。本例運行結(jié)果如圖4.8所示

12、4.4 JSP動作4.4.1 JSP動作功能JSP動作元素用來控制JSP引擎的行為可以動態(tài)插入文件、重用JavaBean組件、導向另一個頁面等。JSP的動作元素jsp:include動作:在頁面得到請求時包含一個文件。jsp:forward動作:引導請求者進入新的頁面。jsp:plugin動作:連接客戶端的Applet或Bean插件。jsp:useBean動作:應用JavaBean組件。jsp:setProperty動作:設置JavaBean的屬性。jsp:getProperty動作:獲取JavaBean的屬性并輸出。需要注意的是,JSP動作元素的形式都是以XML為標準的,而XML中大小寫是敏

13、感的因此jsp:useBean不等于jsp:usebean,前者是標淮的動作元素,而后者什么都不是,在實際使用時一定要注意。4.4.2 jsp:include動作jsp:include動作在即將生成的頁面上動態(tài)的插入文件,它在頁面運行時才將文件插入,對被插入文件進行處理。也就是說它是在頁面產(chǎn)生時插入文件,其語法如下:或 include指令和jsp:include動作區(qū)別1include指令是靜態(tài)的,是在JSP文件被轉(zhuǎn)換成Servlet的時候引入文件,它把被插入文件插到當前位置后再進行編譯2jsp:include動作是動態(tài)的,插入文件的時間是在頁面被請求的時候。JSP引擎不把插入文件和原JSP文

14、件合并成一個新的JSP文件,而是在運行時把被插入文件包含進來。留意:如果包含頁面時需要傳遞參數(shù),則只能使用jsp:include動作 jsp:include動作應用示例 在newBook.jsp代碼中插入了4個文件newbook1.html newbook2.html newbook3.html newbook4.html 這4個文件分別表示4本新書的信息newBook.jsp文件代碼jsp:include 動作示例新書展示4.4.3 jsp:forward動作用于停止當前頁面的執(zhí)行,轉(zhuǎn)向另一個HTML或JSP頁面。在執(zhí)行中JSP引擎不再處理當前頁面剩下的內(nèi)容,緩沖區(qū)被清空。在客戶端看到的是原

15、頁面的地址,而實際顯示的是另一個頁面的內(nèi)容。jsp:forward動作的語法規(guī)則或 jsp:forwardjsp:forward動作應用示例動作應用示例 常見的登錄模塊 本例包含四個文件login.jsp為用戶登錄界面,用戶輸入用戶名和密碼提交表單后,由文件loginReceive.jsp接收用戶的輸入如果輸入正確則轉(zhuǎn)到文件loginCorrect.html如果輸入錯誤則轉(zhuǎn)到loginError.html。文件login.jsp的主要代碼 .姓名 密碼 loginReceive.jsp的主要代碼 .loginCorrect.html文件顯示登陸成功信息loginError.html文件顯示登錄

16、失敗的信息4.4.4 jsp:plugin動作jsp:plugin動作的功能是將服務器端的Java小應用程序(Applet)或JavaBean組件下載到瀏覽器端去執(zhí)行相當于在客戶端瀏覽器插入Java插件。jsp:plugin動作的語法規(guī)則 錯誤信息jsp:plugin動作常用屬性1. type=“bean | applet”指定將被執(zhí)行的插件對象的類型是Bean還是Applet。2. code=“保存類的文件名”指定Java插件將要執(zhí)行的字節(jié)碼(Java Class)文件的名字,其后綴必須是.class。這個文件必須保存在由codebase屬性指定的目錄里。3. codebase=“類路徑”說

17、明將要被下載的Java Class文件的目錄。4. name=“對象名”bean或applet實例的名字。jsp:plugin動作常用屬性錯誤信息一段文字,當Java插件不能啟動時,這段文字向用戶顯示如果插件能夠啟動而applet或Bean不能執(zhí)行,那么瀏覽器彈出一個錯誤信息。jsp:pluginjsp:plugin動作應用示例動作應用示例 在文件plugin.jsp中使用jsp:plugin動作下載名為RollingMessage.java的java小程序文件plugin.jsp主要代碼 用&ltjsp:plugin&gt加載AppletRollingMessage.java

18、程序需要先編譯,形成字節(jié)碼文件RollingMessage.class 此Applet的功能是輸出一行滾動顯示的文字“歡迎學習“Java Web應用”!” 4.4.5 jsp:useBean動作1 jsp:useBean動作功能jsp:useBean動作用來裝載一個將要在JSP頁面中使用的JavaBean。它創(chuàng)建一個JavaBean實例并指定其名字和作用范圍。實際工程中常用JavaBean做組件開發(fā),而在JSP中只需要聲明并使用這個組件,這樣可以較大限度地實現(xiàn)靜態(tài)內(nèi)容和動態(tài)內(nèi)容的分離,這也是JSP的優(yōu)點之一。2 jsp:useBean語法規(guī)則在JSP中實例化一個bean的最簡單的方法如下:sc

19、ope=”有效范圍”該屬性的取值有四種:page, request, session和application,默認值是page。取不同值含義如下:page:該JavaBean只有在當前頁面及當前頁面所包含的靜態(tài)頁面有效;request:該JavaBean的有效范圍是當前的客戶請求;session:該JavaBean的有效范圍是當前客戶的會話期間;application:該JavaBean對所有具有相同ServletContext的頁面都有效,即從創(chuàng)建開始, 所有客戶端共享這個JavaBean,直至服務器關閉時才取消這個bean。還可以通過下面的形式實例化一個JavaBean: 實體 實體的內(nèi)容

20、可以是:合法的JSP程序代碼 和標簽一般的HTML代碼留意:這種實例化形式下,只有當?shù)谝淮螌嵗痓ean時才執(zhí)行實體部分,如果是利用現(xiàn)有的bean實例則不執(zhí)行實體部分。jsp:useBean并非總是意味著創(chuàng)建一個新的bean實例。3 jsp:useBean工作過程JSP引擎根據(jù)useBean中id屬性指定的名字,在一個同步塊中,查找內(nèi)置對象pageContext中是否包含該id指定的名字和scope指定的作用域的對象。如果該對象存在,JSP引擎把這樣一個對象分配給用戶。如果不存在則創(chuàng)建新的bean實例。4.4.6 jsp:setProperty動作用來設置已經(jīng)實例化的bean對象的屬性 1.

21、jsp:setProperty動作的兩種語法規(guī)則第一種是直接將屬性值設置為字符串或表達式,形如:第二種方法用request的參數(shù)值來設置JavaBean的屬性值,request參數(shù)的名字和JavaBean屬性的名字可以不同,其語法規(guī)則如下:2. jsp:setProperty動作的兩種用法首先,可以在jsp:useBean元素的外面使用jsp:setProperty:jsp:useBean id=myName . /.jsp:setProperty name=myName property=someProperty . /此時,不管jsp:useBean是找到了一個現(xiàn)有的bean,還是新創(chuàng)建了

22、一個bean實例,jsp:setProperty都會執(zhí)行。第二種用法是把jsp:setProperty放入jsp:useBean元素的內(nèi)部,如下所示:jsp:useBean id=myName . . jsp:setProperty name=myName property=someProperty . /jsp:useBean此時,jsp:setProperty只有在新建bean實例時才會執(zhí)行,如果是使用現(xiàn)有實例則不執(zhí)行jsp:setProperty。4.4.7 jsp:getProperty動作用來獲取beans的屬性值,將其轉(zhuǎn)換成字符串,然后輸出。其語法規(guī)則如下:留意:jsp:setPr

23、operty動作和jsp:getProperty動作必須與jsp:useBean動作一起使用,不能單獨使用。4.4.8 JSP動作應用案例讀者選購圖書,其中包含了3個程序。bookSelect.html為讀者選購圖書界面,由action屬性指定提交到頁面bookReceive.jsp處理。bookReceive.jsp接收bookSelect.html傳輸?shù)男畔?,然后使用jsp:useBean動作創(chuàng)建名為book的beans組件,使用jsp:setProperty和jsp:getProperty設置和獲取Java Bean的值。以上兩個文件均保存在Tomcat安裝目錄下的webappsJava

24、Bean目錄下。4.4.8 JSP動作應用案例BookBean.java是一個JavaBean,它需要首先編譯成BookBean.class存放在Tomcat安裝目錄下的webappsJavaBeanWEB-INFclassesbean目錄下。BookBean.java文件代碼package bean;import java.io.*;public class BookBean private String BookName=; private int BookNum=1; public BookBean() public void setBookName( String BookName )

25、this.BookName = BookName; public String getBookName()return this.BookName; public void setBookNum( int BookNum )this.BookNum = BookNum; public int getBookNum() return this.BookNum; bookSelect.html主要代碼書 名: 數(shù)量 : bookReceive.jsp文件代碼:圖書訂購訂 購 圖 書 清 單書 名: 數(shù) 量: bookReceive.jsp文件代碼2:圖書訂購訂 購 圖 書 清 單書 名: 數(shù) 量: 4.5 小結(jié) 本章介紹了JSP

溫馨提示

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

評論

0/150

提交評論