《第03章--JSP語法詳解-JSP課件》由會員分享,可在線閱讀,更多相關(guān)《第03章--JSP語法詳解-JSP課件(37頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四
2、級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第3章,JSP,語法詳解,本章內(nèi)容,學習內(nèi)容,JSP,頁面文件的組成,JSP,的注釋,JSP,的腳本元素,JSP,的指令元素,JSP,的動作元素,學習重點與目標,目標是掌握,JSP,的語法與編寫,重點是理解,JSP,頁面與,Java,類(,Servlet,類)的關(guān)系,3.1 JSP,文件的組成,JSP,頁面是在,HTML,文檔中加入,Java,代碼片段。,其擴展名為,.jsp,。,Web,服務(wù)器在收到對,
3、JSP,頁面的請求時,將執(zhí)行其對應(yīng)的,Servlet,類的代碼,并將結(jié)果以,HTML,格式返回給客戶端。,一個簡單的,JSP,頁面:,JSP,頁的創(chuàng)建,第一個,JSP,程序,JSP,文件的組成元素,3加入,Java,代碼,加入到,JSP,頁面中的,Java,代碼,在客戶端瀏覽器中是不可見的。它們需要被服務(wù)器執(zhí)行,然后由服務(wù)器將執(zhí)行結(jié)果與,HTML,標記語言一同發(fā)送給客戶端進行顯示。通過向,JSP,頁面中加入,Java,代嗎,可以使該頁面生成動態(tài)的內(nèi)容。例如:,4,JSP,表達式,JSP,表達式主要用來輸出,它可以向頁面輸出內(nèi)容顯示給用戶,還可以用來動態(tài)的指定,HTML,標記中屬性的值。例如:,
4、JSP,轉(zhuǎn)義字符,轉(zhuǎn)義字符是以“”開頭的特殊字符,在屏幕上是不能顯示的,而且在程序中無法用一般形式的字符表示,只能用這種特殊形式表示。常見的轉(zhuǎn)義字符如表所示:,字符形式,描述,n,換行符,將當前位置移到下一行開頭,與,元素是相同的,t,制表符,跳轉(zhuǎn)到下一個,tab,位置,b,退格符,將當前位置移到前一列,r,回車符,將當前位置移到本行開頭,f,換頁符,將當前位置移到下頁開頭,反斜杠字符“”,單引號字符,”,雙引號字符,3.2,JSP,注釋方式,HTML,注釋,語法:,-,HTML,注釋將被發(fā)送到客戶端,但不直接顯示,用戶在客戶端源代碼中可以查看到。,JSP,注釋,語法,:,JSP,注釋在傳輸過
5、程中會被過濾掉,不會發(fā)送到客戶端。,Java,腳本段注釋,就是,Java,語言的注釋,常用單行注釋和多行注釋,例:,CH03Syntaxcomment_jsp.jsp,聲明語句,聲明語句(,Declaration),在,JSP,頁面中定義方法和變量,其聲明格式如下:,在頁面中通過聲明元素聲明的方法和變量,在整個頁面內(nèi)都有效,,它們將成為,JSP,頁面被轉(zhuǎn)換為類文件后中的方法和屬性,,并且他們會被多個線程即多個用戶共享。也就是說,其中的任何一個線程對聲明的變量或方法的修改都會改變它們原來的狀態(tài)。它們的生命周期從創(chuàng)建到服務(wù)器關(guān)閉后結(jié)束。,注意:在,“,%,”,與,“,!,”,之間不要空格。,語法與
6、在,Java,語言中聲明變量和方法是一樣的。,腳本段,腳本段(,Scriptlets),就是,JSP,代碼片段或腳本片段,嵌在“”標記中。,在腳本段中可以定義變量、調(diào)用的方法和進行各種表達式運算,且每行語句后面加入分號。這種,Java,代碼在,Web,服務(wù)器響應(yīng)請求時會運行。腳本段使用格式如下:,說明:腳本程序的使用比較靈活,實現(xiàn)的功能是,JSP,表達式無法實現(xiàn)的。,JSP,腳本元素示例,CH03Syntaxscript_jsp.jsp,查看其生成的,Servlet,類,C:Ubeans7.0apache-tomcat-7.0.11_baseworkCatalinalocalhostSynta
7、xorgapachejsp,頁面指令元素:,page,page,指令即頁面指令,可以放在,JSP,頁面中的任意位置。,page,指令包含多種屬性,這些屬性可以影響到當前的,JSP,頁面。,page,指令中除,import,屬性外,其他屬性只能出現(xiàn)一次。,頁面指令元素:,page,例:,CH03Syntaxpage_directive,頁面指令元素:,page,page,指令各屬性所具有的功能,(2),info,設(shè)置為任意字符串,如當前頁面的作者或其他相關(guān)的頁面信息??梢酝ㄟ^,Servlet.getServletInfo(),方法來獲取設(shè)置的字符串。,errorPage,指定一個當前頁面出現(xiàn)異常
8、時所要調(diào)用的頁面。如果屬性值是以“,/,”,開頭的路徑,則將在當前,Web,應(yīng)用的根目錄下查找文件;否則,將當前頁面的目錄下查找文件。,isErrorPage,設(shè)置為,true,,說明在當前頁面中可以使用,excpetion,異常對象。若在其他頁面中通過,errorPage,屬性指定了該頁面,則當調(diào)用頁面出現(xiàn)異常時候,會跳轉(zhuǎn)到該頁面,并且在該頁面中可以通過,exception,對象輸出錯誤信息。相反,如果將該屬性設(shè)置為,false,,則在當前頁面中不能使用,execption,對象。該屬性默認值為,false,。,isELlgnored,可以使,JSP,容器忽略表達式語言“,$,”,。其值只能
9、是,ture,或,false,。設(shè)置為,true,,則忽略表達式語言;設(shè)置為,false,,則不忽略表達式語言。,extends,設(shè)置當前,JSP,頁產(chǎn)生的,Servlet,是繼承哪個父類。在,JSP,中通常不會設(shè)置該屬性,,JSP,容器會提供轉(zhuǎn)換后的,Servlet,繼承的父類。并且如果設(shè)置該屬性,一些改動會影響,JSP,的編譯能力。,pageEncoding,用來設(shè)置,JSP,頁字符的編碼,默認值是“,ISO-8859-1,”,。,包含指令元素:,include,include,指令用于在當前的,JSP,頁面中在當前使用該指令的位置嵌入其他的文件,如果被包含文件有可以執(zhí)行的代碼,則顯示代碼
10、執(zhí)行結(jié)果。,include,指令的語法格式如下:,include,指令只存在,file,屬性,表示此,file,的路徑,路徑名指的是相對路徑,不需要指定端口、協(xié)議或域名等。該屬性不支持任何表達式,也不允許傳遞任何參數(shù)。,注意:如果該屬性值以“/”開頭,那么指定的是一個絕對路徑,將在當前應(yīng)用的根目錄下查找文件,如果是以文件名稱或文件夾名開頭,那么指定的相對路徑將在當前頁面的目錄上查找文件。,例:,CH03Syntaxinclude_directive,提供動作指令元素:,taglib,taglib,指令可以在頁面中使用這些基本標記或自定義的標記來完成特殊的功能,在,JSP,頁面中啟動客戶端定制行
11、為。,taglib,指令語法格式如下:,taglib,元素具有兩個屬性:,uri,:該屬性指定了,JSP,要在,web.xml,文件中查找的標簽庫描述符,該描述符是一個標簽描述文件(,*.,tld,),的映射。在該標簽描述文件中定義了該標簽庫中各個標簽名稱,并為每個標簽指定一個標簽處理類。,prefix,:該屬性指定了標簽的前綴,此前綴不能使用已被,sun,公司聲明保留字。前綴名不能為,jsp,、,jspx,、,java,、,javax,、,servlet,、,sun,、,和,sunw,。,例如:,3.5,JSP,動作元素,JSP,動作元素是在請求處理階段按照其在頁面中的出現(xiàn)順序被執(zhí)行的,只有
12、被執(zhí)行才能實現(xiàn)相應(yīng)功能。,指令元素是在由,JSP,到,Servlet,類的翻譯階段進行的。,包含文件:,該元素允許包含動態(tài)或靜態(tài)文件,如果包含的文件是靜態(tài)的,它僅僅是把包含文件的內(nèi)容加到,JSP,文件中去。包含靜態(tài)文件的使用格式如下:,如果包含的文件是動態(tài)的。這個被包含文件也會被,JSP,編譯器執(zhí)行,并且在編譯時可以傳遞參數(shù)。包含動態(tài)文件使用格式如下:,包含文件:,與,include,指令的區(qū)別,(1),是直接包含源代碼,,包含請求的,HTML,代碼,并且支持,JSP,表達式和,Struts,應(yīng)用中的請求模式。,(2)通過,包含一個,JSP,頁面,在包含的頁面中相關(guān)的,response,操作都
13、被忽略,也就是說當前操作不能通過,response,對象重定向到其他頁面。如果用,包含的,JSP,頁面,在該頁面中所有的,response,操作都會正常運行。,(3),元素請求代碼時,可以帶參數(shù),而,就不可以帶參數(shù)。,(4)從執(zhí)行速度角度上講,,比,請求速度快,因為,僅處理一個請求,而,處理兩個請求。,(5)從實際應(yīng)用角度上講,,用于檢測用戶是否登錄、網(wǎng)站標識或網(wǎng)站的一些靜態(tài)不變的信息;而,用于發(fā)送一個請求,并接收返回的,HTML,,并可以加入?yún)?shù)。,例:,CH03Syntaxinclude_action,請求轉(zhuǎn)發(fā):,該元素用于將客戶端請求從一個頁面轉(zhuǎn)發(fā)到另一個,JSP,頁面、,HTML,或相
14、關(guān)的資源文件中。當該元素被執(zhí)行后,當前頁面將不再被執(zhí)行,而是去執(zhí)行該元素指定的目標頁面。,使用格式如下:,如果轉(zhuǎn)發(fā)目標是一個動態(tài)文件,還可以向該文件中傳遞多個參數(shù),具體使用格式如下:,參數(shù)及元素說明:,page,屬性:該屬性指定了目標文件的路徑。,元素:該元素用來向動態(tài)的目標文件中傳遞參數(shù)。,例:,CH03Syntaxforward_action,聲明使用,JavaBean:,該元素可以在,JSP,頁面中創(chuàng)建一個,JavaBean,實例,并且通過屬性的設(shè)置可以將該實例存儲到,JSP,中的指定范圍內(nèi)。,使用格式如下:,其他元素設(shè)置,如,聲明使用,JavaBean:,屬性說明(續(xù)),class,屬
15、性:該屬性指定了一個完整的類名,指定的類名不能是抽象的,它必須具有公共的、沒有參數(shù)的構(gòu)造方法。在沒有設(shè)置,type,屬性時,必須設(shè)置,class,屬性。,type,屬性:該屬性用于設(shè)置由,id,屬性指定的變量類型,可以指定要創(chuàng)建實例的類本身、類的父類或是一個接口。,beanName,屬性:該屬性可以是類文件、,JavaBean,實例或包含,JavaBean,的串行化文件(.,ser,文件)。當,JavaBean,不存在與指定范圍內(nèi)時,才可以使用此屬性。它必須使用類型屬性來指定要將何種類型的,Bean,實例化。,beanName,屬性不能,class,屬性一起使用,并且區(qū)分大小寫。,聲明使用,J
16、avaBean:(4),元素的使用:,(1)不存在,Body,的格式如下:,(2)存在,Body,的格式如下:,設(shè)置,JavaBean,屬性值:,元素的屬性,property=“*”,:,該屬性說明,request,請求中的所有參數(shù)值將被一一賦給,JavaBean,中與參數(shù)具有相同名字的屬性。,property=“,屬性名稱”,:該屬性取值為,JavaBean,中的屬性時,則只會將,request,請求中與該,JavaBean,屬性同名的一個 參數(shù)的致賦給這個,JavaBean,屬性。,property=“,屬性名稱,”,param=“,參數(shù)名稱,”,:,param,屬性指定一個,request,請求中的參數(shù),,property,屬性指定,JavaBean,中的某個屬性。該方法允許將請求中的參數(shù)給,JavaBean,中與該參數(shù)不同名的屬性。,property=“,屬性名”,value=“,值”,:,value,屬性指定的值可以是字符串數(shù)值或標識一個具體指的,JSP,表達式或,EL,表達式。該值將被賦值給,property,屬性指定的,JavaBean,屬性。,獲取,JavaBean,屬