JSP基礎(chǔ)學(xué)習(xí)2_第1頁
JSP基礎(chǔ)學(xué)習(xí)2_第2頁
JSP基礎(chǔ)學(xué)習(xí)2_第3頁
JSP基礎(chǔ)學(xué)習(xí)2_第4頁
JSP基礎(chǔ)學(xué)習(xí)2_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第4章章 JSP頁面元素與內(nèi)置對象頁面元素與內(nèi)置對象內(nèi)容提要n介紹介紹JSP頁面的結(jié)構(gòu)頁面的結(jié)構(gòu)nJSP的編譯指令、操作指令和代碼的編譯指令、操作指令和代碼n重點介紹重點介紹JSP常用的六大基本對象:常用的六大基本對象:nout對象、對象、response對象、對象、request對象、對象、application對象、對象、session對象和對象和cookie對象。對象。理解服務(wù)器端執(zhí)行 n所有HTML文件可以在資源管理器中雙擊執(zhí)行n但是JSP文件必須先放到Web服務(wù)器中,然后通過HTTP的方式訪問。因為文件內(nèi)所有內(nèi)代碼是被Web服務(wù)器解釋執(zhí)行的。 理解服務(wù)器端執(zhí)行理解服務(wù)器端執(zhí)行案例名

2、稱:理解服務(wù)器端執(zhí)行案例名稱:理解服務(wù)器端執(zhí)行程序名稱:程序名稱:4-01.jspvar dnow = new Date();dhours = dnow.getHours();dminutes = dnow.getMinutes();dseconds = dnow.getSeconds();document.write(瀏覽器時間: + dhours + : + dminutes + : + dseconds);理解服務(wù)器端執(zhí)行理解服務(wù)器端執(zhí)行 JSP頁面結(jié)構(gòu) n在一個JSP頁面中,主要分為三種元素:編譯指令、操作指令和JSP代碼。n編譯指令告訴JSP的解釋引擎(比如:Tomcat),需要在編

3、譯時做什么動作,比如引入一個其它的類,設(shè)置JSP頁面的使用什么語言編碼等。n操作指令則是在JSP頁面被請求時,動態(tài)執(zhí)行的,比如可以根據(jù)某個條件動態(tài)跳轉(zhuǎn)到另外一個頁面。nJSP代碼指的就是我們自己嵌入在JSP頁面中的Java代碼,這又分為兩種:第一種是JSP頁面中一些變量和方法的聲明,在聲明時,使用“”標(biāo)記。另外一種,就是常用到的用“”包含的JSP代碼塊:編譯指令 n可以通過一定的指令,讓JSP容器采取必要的動作。n例如:可以指定一個專門的錯誤處理頁面,當(dāng)JSP頁面出現(xiàn)錯誤時,可以由JSP容器自動地調(diào)用錯誤處理頁面。 page指令 npage指令是針對當(dāng)前頁面的指令。page指令有“”字符串構(gòu)成

4、的標(biāo)記符來指定。在標(biāo)記符中是代碼體,包括指令的類型和值。例如:“”指令告訴JSP容器將java.sql包中的所有類都引入當(dāng)前的JSP頁面。n常用的page指令標(biāo)記有8個:nlanguage、extends、import、errorPage、isErrorPage、contentType、isThreadSafe和session。page指令nlanguage設(shè)置JSP頁面中用到的語言,默認值為“Java”,也是目前唯一有效的設(shè)定值。使用的語法是:“”。nextends設(shè)定目前JSP頁面要繼承的父類。一般情況下不需要進行設(shè)置。在默認情況下,JSP頁面的默認父類是HttpJspBase。例如:當(dāng)前

5、JSP頁面要繼承mypackage包下的myclass類,相應(yīng)的聲明語句為:“”。nimport設(shè)置目前JSP頁面中要用到的Java類,這些Java類可能是Sun JDK中的類,也有可能是程序員自己定義的類。例如:“”。n有些類在默認情況下已經(jīng)被加入到當(dāng)前JSP頁面,而不需要特殊聲明,包括四個類:java.lang.*;、java.servlet.*;、java.servlet.jsp.*;和java.servlet.http.*;。nerrorPage用來設(shè)定當(dāng)JSP頁面出現(xiàn)異常(Exception)時,所要轉(zhuǎn)向的頁面。如果沒有設(shè)定,則JSP容器會用默認的當(dāng)前網(wǎng)頁來顯示出錯信息。例如:“”n

6、isErrorPage用來設(shè)定當(dāng)前的JSP頁面是否作為傳回錯誤頁面的網(wǎng)頁,默認值是“false”。如果設(shè)定為“true”,則JSP容器會在當(dāng)前的頁面中生成一個exception對象。使用errorPage指令捕獲異常 案例名稱:案例名稱:JSP中中Exception的捕捉的捕捉程序名稱:程序名稱:4-02.jsp JSP中中Exception的捕捉的捕捉案例名稱:案例名稱:JSP中中Exception的捕捉的捕捉程序名稱:程序名稱:4-03.jsp當(dāng)前頁面是:4-03.jspJSP中中Exception的捕捉的捕捉ncontentType這個屬性用來設(shè)定傳回網(wǎng)頁的文件格式和編碼方式,一般使用

7、“text/html;charset=GBK”。nisThreadSafe 定義JSP容器執(zhí)行JSP程序的方式,默認值為“true”,代表JSP容器會以多線程方式運行JSP頁面。當(dāng)設(shè)定值為“false”時,JSP容器會以單線程方式運行JSP頁面。nsession定義當(dāng)前JSP頁面中是否要用到session,默認值為“true”。include指令 ninclude指令用來指定怎樣把另一個文件包含到當(dāng)前的JSP頁面中,這個文件可以是普通的文本文件,也可以是一個JSP頁面。例如:“”。n采用include指令,可以實現(xiàn)JSP頁面的模塊化,使JSP的開發(fā)和維護變得非常簡單。 使用使用include指

8、令指令n案例名稱:使用案例名稱:使用include指令指令n程序名稱:程序名稱:4-04.jspn taglib指令 ntaglib指令允許頁面使用標(biāo)記擴展(定制標(biāo)記)。它命名了標(biāo)記庫。在JSP頁面里遇到定制的標(biāo)記時,引擎將找到在標(biāo)記庫中的該標(biāo)記,并且找到要實施的操作實際上是執(zhí)行Java代碼。taglib指令的語法為:nn其中:nuri:一個URI標(biāo)識標(biāo)記庫描述器。一個標(biāo)記庫描述器用來唯一的命名一組定制的標(biāo)記,并且告訴包容器如何處理特殊的標(biāo)記ntagPrefix:定義一個prefix:tagname形式的字符串前綴,用于定義定制的標(biāo)記。所保留的前綴為jsp、jspx、java、servlet、

9、sun、sunw。操作指令 nJSP編譯指令是讓JSP容器自動采取的動作,但對于Web開發(fā)人員,有些時候想要自己控制JSP頁面的運行,這時可以采用JSP中的操作指令。n操作指令包括:njsp:include指令、jsp:forward指令、jsp:param指令、jsp:useBean指令、jsp:setProperty指令和jsp:getProperty指令等。jsp:include指令 njsp:include標(biāo)準(zhǔn)動作用于在當(dāng)前的JSP頁面中加入靜態(tài)和動態(tài)的資源。n語法格式為:nnjsp:include指令必須以“/”結(jié)束,功能和include指令相同。jsp:forward指令 njsp

10、:forward操作指令用于把當(dāng)前的JSP頁面轉(zhuǎn)發(fā)到另一個頁面上。n基本語法為:n“”,n使用該功能時,瀏覽器的地址欄中地址不會發(fā)生任何變化。 forward指令實現(xiàn)頁面間的跳轉(zhuǎn)指令實現(xiàn)頁面間的跳轉(zhuǎn)案例名稱:使用案例名稱:使用forward指令實現(xiàn)頁面間的跳轉(zhuǎn)指令實現(xiàn)頁面間的跳轉(zhuǎn)程序名稱:程序名稱:4-05.jspjsp:param指令 n使用jsp:param操作指令可以在執(zhí)行jsp:forward操作動作時,追加參數(shù),按照“名字/值”的方式進行傳遞。njsp:param操作指令以標(biāo)記“”開始,以“/”結(jié)束。比如:“”??梢詫sp:forward操作指令和jsp:param操作指令結(jié)合到一

11、起來使用。 JSP代碼 nJSP代碼包括兩種,n第一種是JSP頁面中一些變量和方法的聲明,在聲明時,使用“”標(biāo)記n另外一種,就是常用到的用“”包含的JSP代碼塊變量和方法 n在“”標(biāo)記符號之間聲明變量和方法,變量類型可以是Java語言允許的任何數(shù)據(jù)類型。n在JSP頁面被編譯執(zhí)行的時候,整個頁面被編譯成一個類,這些變量是JSP頁面類的成員變量。變量的聲明和使用變量的聲明和使用案例名稱:變量的聲明和使用案例名稱:變量的聲明和使用程序名稱:程序名稱:4-06.jsp個人訪問本站變量的聲明和使用變量的聲明和使用n也可以聲明函數(shù),一般會在函數(shù)前面加上synchronized關(guān)鍵字,功能是當(dāng)前一個用戶在執(zhí)

12、行該方法的時候,其他的用戶必須等待,直到該用戶完成操作。使用方法 案例名稱:函數(shù)的聲明和使用案例名稱:函數(shù)的聲明和使用程序名稱:程序名稱:4-07.jsp您是第個訪問本站的客戶。代碼塊 n可以在“”之間插入Java程序片,一個JSP頁面可以有許多程序片,這些代碼塊將被JSP服務(wù)器按照順序執(zhí)行。n在一個代碼塊中聲明的變量是JSP頁面的局部變量,只在當(dāng)前頁面中有效。 代碼塊代碼塊案例名稱:代碼塊案例名稱:代碼塊程序名稱:程序名稱:4-08.jsp個人訪問本站 JSP隱含對象概述 nJSP根據(jù)Servlet API而提供了某些隱含對象??梢允褂脴?biāo)準(zhǔn)的變量來訪問這些對象,并且不用編寫任何額外的代碼,就

13、可以在JSP中自動使用到它。在JSP頁面中可以獲得的主要的7個隱含對象變量為:nout對象:功能是把信息回送到客戶端的瀏覽器中。nresponse對象:功能是處理服務(wù)器端對客戶端的一些響應(yīng)。nrequest對象:功能是用來得到客戶端的信息。napplication對象:用來保存網(wǎng)站的一些全局變量。nsession對象:用來保存單個用戶訪問時的一些信息。ncookie對象:將服務(wù)器端的一些信息寫到客戶端的瀏覽器中。npageContext對象:提供了訪問和放置頁面中共享數(shù)據(jù)的方式。out對象 nout對象是javax.servlet.jsp.JspWriter類的一個子類的對象,它的作用是把信息

14、回送到客戶端的瀏覽器中。在out對象中,最常用的方法就是print()和println()。在使用print()或println()方法時,由于客戶端是瀏覽器,因此向客戶端輸出時,可以使用HTML中的一些標(biāo)記,例如:“out.println(”Hello,JSP“);”。n其他一些常用的方法是:out.write功能和out.print相同,newLine()的功能是輸出一個換行符,out.flush()的功能是輸出緩沖的內(nèi)容。out.close()的功能是關(guān)閉輸出流。out對象的生命周期是當(dāng)前頁面。因此對于每一個JSP頁面,都有一個out對象 使用使用out對象對象案例名稱:使用案例名稱:使

15、用out對象對象程序名稱:程序名稱:4-09.jspreponse對象 nresponse對象是一個javax.servlet.http.HttpServletResponse類的子類的對象 網(wǎng)頁轉(zhuǎn)向 n對于response對象,最常用到的是sendRedirect()方法,可以使用這個方法將當(dāng)前客戶端的請求轉(zhuǎn)到其它頁面去。相應(yīng)的代碼格式為:“response.sendRedirect(URL地址);”n和指令的最大區(qū)別就是:只能使用在本網(wǎng)站內(nèi)跳轉(zhuǎn),但我可以使用response.sendRedirect跳轉(zhuǎn)到任何一個地址的頁面 案例名稱:網(wǎng)頁轉(zhuǎn)向案例名稱:網(wǎng)頁轉(zhuǎn)向程序名稱:程序名稱:4-10.

16、jsp動態(tài)contentType響應(yīng) n當(dāng)請求一個JSP頁面的時候,如果該頁面用page指令設(shè)置頁面的contentType屬性的值是text/html,那么服務(wù)器將把靜態(tài)頁面部分發(fā)送給客戶端。n也可以設(shè)置為其他一些相應(yīng)類型,如:text/plain(文本文件)、application/x-msexcel(Excel文件)和application/msword(Word文件)等。 顯示為顯示為Word文檔文檔案例名稱:顯示為案例名稱:顯示為Word文檔文檔程序名稱:程序名稱:4-11.jspresponse對象 setContentType方法將當(dāng)前頁面保存為word文檔嗎 HTTP文件頭響應(yīng)

17、 n可以利用JSP動態(tài)改變客戶端的響應(yīng),使用的語法是“response.setHeader()”,比如讓客戶端自動每隔5秒刷新一次, 案例名稱:動態(tài)改變響應(yīng)頭案例名稱:動態(tài)改變響應(yīng)頭程序名稱:程序名稱:4-12.jsp現(xiàn)在的時間是:設(shè)置緩沖區(qū) n在實際的JSP應(yīng)用開發(fā)中,為了確保顯示的正確性,需要將禁用頁面緩沖,否則會顯示其他用戶的一些的信息。為了解決這個問題,需要在每個JSP的頁面中添加語句 案例名稱:設(shè)置緩沖區(qū)案例名稱:設(shè)置緩沖區(qū)程序名稱:程序名稱:4-13.jsprequest對象 nrequest對象是javax.servlet.HttpServletRequest子類的對象,當(dāng)客戶端

18、請求一個JSP頁面時,JSP容器會將客戶端的請求信息包裝在這個request對象中n請求信息的內(nèi)容包括請求的頭信息(Header)、系統(tǒng)信息(比如:編碼方式)、請求的方式(比如:GET或POST)、請求的參數(shù)名稱和參數(shù)值等信息 得到Form表單的信息 n通常我們用得最多的就是客戶端請求的參數(shù)名稱和參數(shù)值信息。得到某參數(shù)值的語法為:“request.getParameter(”param1“)”。n也可以通過request對象的getParameterNames()方法得到客戶端傳遞過來的所有參數(shù)名字,如:n“Enumeration params = request.getParameterNa

19、mes();”。得到Form表單的信息案例名稱:案例名稱:HTML表單表單程序名稱:程序名稱:4-14.html姓名:密碼: 讀取表單數(shù)據(jù)讀取表單數(shù)據(jù)案例名稱:讀取表單數(shù)據(jù)案例名稱:讀取表單數(shù)據(jù)程序名稱:程序名稱:4-15.jsp姓名:密碼:第二種讀取值的方法是利用集合案例名稱:使用案例名稱:使用request對象獲取用戶提交數(shù)據(jù)的所有參數(shù)名字和值對象獲取用戶提交數(shù)據(jù)的所有參數(shù)名字和值程序名稱:程序名稱:4-17.jsp%String current_param = ;request.setCharacterEncoding(GBK);Enumeration params = request.

20、getParameterNames();while(params.hasMoreElements() current_param = (String)params.nextElement(); out.println(Name: + current_param + );out.println(Values: + request.getParameter(current_param) + );%得到客戶的信息 n利用request對象可以獲得客戶提交的信息,比如:JSP文件目錄、客戶端的地址、以及服務(wù)器的端口等, 案例名稱:獲得客戶的信息案例名稱:獲得客戶的信息程序名稱:程序名稱:4-18.js

21、p漢字問題兩種解決方法 n當(dāng)利用request.getParameter得到Form種元素的時候,默認的情況字符編碼為ISO-8859-1,這種編碼不能正確的顯示漢字。n目前有兩種解決方法,一種是在執(zhí)行操作之前,設(shè)置request的編碼格式,語法是:“request.setCharacterEncoding(GBK);”另一種方法是轉(zhuǎn)換字符編碼 調(diào)查表信息的讀取 案例名稱:調(diào)查表輸入頁面案例名稱:調(diào)查表輸入頁面程序名稱:程序名稱:input.htm調(diào)查表信息的讀取案例名稱:調(diào)查表處理頁面案例名稱:調(diào)查表處理頁面程序名稱:程序名稱:handle.jspapplication對象 n站點所有的用戶

22、公用一個application對象,當(dāng)站點服務(wù)器開啟的時候,application就被創(chuàng)建,直到網(wǎng)站關(guān)閉。利用application這一特性,可以方便地創(chuàng)建聊天室和網(wǎng)站計數(shù)器等常用站點應(yīng)用程序 application的自定義屬性 npublic void setAttribute(String key, Object obj),將對象obj添加到application對象中,并為添加的對象添加一個索引關(guān)鍵字key。npublic Object getAttribute(String key),獲取application對象中含有關(guān)鍵字key的對象。由于任何對象都可以添加到application

23、中,因此用此方法取回對象的時候,需要強制轉(zhuǎn)化為原來的類型。自定義屬性自定義屬性案例名稱:自定義屬性案例名稱:自定義屬性程序名稱:程序名稱:4-19.jsp自定義屬性自定義屬性案例名稱:自定義屬性案例名稱:自定義屬性程序名稱:程序名稱:4-20.jsp實現(xiàn)聊天室 n聊天室允許多用戶實時進行信息交流,所有用戶可以看到彼此的信息,這與application對象的特點正好符合,所以可以方便地利用application實現(xiàn)聊天室。 案例名稱:簡易聊天室案例名稱:簡易聊天室程序名稱:程序名稱:4-21.jsp網(wǎng)頁計數(shù)器 n網(wǎng)頁計數(shù)器是application 對象的又一個用途,因為application是所

24、有的用戶所共有的,所以可以存儲計數(shù)器的值,當(dāng)有新用戶訪問網(wǎng)頁時自動增加計數(shù)器的值。 案例名稱:網(wǎng)頁計數(shù)器版本一案例名稱:網(wǎng)頁計數(shù)器版本一程序名稱:程序名稱:CountV1.jsp案例名稱:網(wǎng)頁計數(shù)器版本二案例名稱:網(wǎng)頁計數(shù)器版本二程序名稱:程序名稱:CountV2.asp session對象 nsession對象是java.servlet.http.HttpSession類的子類的對象,它表示當(dāng)前的用戶會話信息。在session中保存在對象在當(dāng)前用戶連接的所有頁面中都是可以被訪問到的。n可以使用Session 對象存儲用戶登錄網(wǎng)站時候的信息。當(dāng)用戶在頁面之間跳轉(zhuǎn)時,存儲在Session對象中的

25、變量不會被清除 對session的理解 案例名稱:使用案例名稱:使用ID屬性屬性程序名稱:程序名稱:4-22.jsp你的session ID:自定義屬性 n對于session對象中,經(jīng)常用到的方法是setAttribute()、getAttribute()和removeAttribute()。分別可以對session中的對象進行存取和刪除操作。nsession對象的主要用途也是保存信息,當(dāng)用戶第一次到達網(wǎng)站時,系統(tǒng)為其分配一個session。session和application一樣也使用自己的自定義屬性 使用使用session的自定義屬性的自定義屬性案例名稱:使用案例名稱:使用session的自定義屬性的自定義屬性程序名稱:程序名稱:4-23.jsp下一頁使用使用session的自定義屬性的自定義屬性案例名稱:使用案例名稱:使用session的自定義屬性的自定義屬性程序名稱:程序名稱:4-24.jsp下一頁簡易session版購物車 n利用session保存用戶選購的商品信息,本購物車程序包含三個程序:n(1)buy1.jsp:購物網(wǎng)頁一。n(2)buy2.jsp:購物網(wǎng)頁二。n(3)display.jsp:查看購物車程序。簡易session版購物車案例名稱:購物網(wǎng)頁一案例名稱:購物網(wǎng)頁一程序名稱:程序名稱:buy1.jsp案例名稱:購物網(wǎng)頁二案例名稱

溫馨提示

  • 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

提交評論