




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JSP程序設(shè)計(jì)一、概述1.3 JSP頁面與Web服務(wù)目錄1. 訪問JSP頁面的四種方式:(1)根目錄:.webappsRoot,直接通過/JSP文件名訪問(2)webapps下的Web服務(wù)目錄:.webappsMyWeb,可通過/MyWeb/JSP文件名訪問,新建后不必重啟Tomcat服務(wù)器;(3)新建Web服務(wù)目錄:需要事先配置conf文件夾下的server.xml,添加:,修改后必須重啟Tomcat服務(wù)器;(4)在已建立好的Web服務(wù)目錄下新建路徑,通過網(wǎng)址相對路徑的方式也能訪問文件。1.4 JSP運(yùn)行原理1.JSP頁面的運(yùn)行原理
2、: (1)當(dāng)服務(wù)器上的一個(gè)JSP頁面被第一次請求執(zhí)行時(shí),服務(wù)器上的JSP引擎首先將JSP頁面文件轉(zhuǎn)譯成一個(gè)java文件,并對該文件編譯生成字節(jié)碼(.class)文件,然后執(zhí)行字節(jié)碼文件響應(yīng)用戶的請求。(2)當(dāng)該JSP頁面再次被請求執(zhí)行時(shí),JSP將直接執(zhí)行字節(jié)碼文件來響應(yīng)用戶,從而提高JSP頁面的訪問速度。2.JSP頁面的執(zhí)行過程:(1)JSP引擎將JSP頁面中的HTML標(biāo)記發(fā)送到用戶瀏覽器,由瀏覽器中的HTML解釋器負(fù)責(zé)解釋執(zhí)行HTML標(biāo)記;(2)JSP引擎處理JSP標(biāo)記,并將有關(guān)的處理結(jié)果發(fā)送到用戶瀏覽器上;(3)執(zhí)行“”之間的Java程序片,把執(zhí)行結(jié)果以字符串的形式交由用戶瀏覽器顯示;(4
3、)當(dāng)多個(gè)用戶請求一個(gè)JSP頁面時(shí),Tomcat服務(wù)器為每個(gè)用戶啟動一個(gè)線程,負(fù)責(zé)執(zhí)行字節(jié)碼文件響應(yīng)請求。二、JSP頁面與JSP標(biāo)記2.1 JSP頁面的基本結(jié)構(gòu)(1)HTML標(biāo)記(2)JSP標(biāo)記(3)變量/方法的聲明(4)Java程序片(5)Java表達(dá)式 % out.println(Hello World); / java程序片 % 2.2 變量和方法的聲明(1)在整個(gè)JSP頁面內(nèi)有效,與位置無關(guān),習(xí)慣寫在前面;(2)在中聲明的變量成為JSP頁面(類)的成員變量;(3)多用戶訪問JSP頁面時(shí),頁面的成員變量在多個(gè)線程之間共享。(4)避免用戶在操作成員變量時(shí)變量被其他用戶修改,有以下兩種方法:
4、合理配置變量作用域; 對操作成員變量的方法使用synchronize關(guān)鍵字修飾。2.3 Java程序片(1)一個(gè)JSP頁面可以有許多可分割的Java程序片,JSP引擎會按順序執(zhí)行它們;(2)Java程序片中聲明的變量稱為JSP頁面的局部變量;(3)多用戶訪問JSP頁面時(shí),頁面的Java程序片在多個(gè)線程中獨(dú)立運(yùn)行。2.4 表達(dá)式(1)不能在表達(dá)式中插入語句,如是錯(cuò)誤的;(2)%和=之間不能有空格;(3)表達(dá)式的值交由服務(wù)器計(jì)算,計(jì)算結(jié)果以字符串的形式發(fā)送至用戶端顯示。2.5 JSP中的注釋(1)HTML注釋:用戶可通過瀏覽器查看HTML注釋的內(nèi)容;(2)JSP注釋:編譯JSP頁面時(shí)將忽略JSP注
5、釋,用戶無法查看JSP注釋的內(nèi)容。2.6 JSP指令標(biāo)記(靜態(tài))2.6.1 page指令標(biāo)記 定義JSP頁面的屬性及其取值page屬性的取值:(1)language:腳本語言,目前只能取java(默認(rèn)取值);(2)import:為 JSP頁面引入Java核心包中的類,如:默認(rèn)引入了java.lang.*, javax.servlet, javax.servlet.jsp.*和javax.servlet.http.*;(3)contentType:確定JSP頁面響應(yīng)的MIME類型(打開方式)及字符編碼;如:contentType屬性只能指定一個(gè)值,不允許指定多值;(4)session:是否需要使
6、用內(nèi)置的session對象(見4.3節(jié)),默認(rèn)為true;(5)buffer:設(shè)置內(nèi)置輸出流out對象(見4.4節(jié))的緩沖區(qū)大小,默認(rèn)8KB,取值none表示不使用緩沖區(qū);(6)autoFlush:當(dāng)out對象的緩沖區(qū)被填滿時(shí),緩沖區(qū)是否自動刷新,默認(rèn)true;當(dāng)取值false時(shí),緩沖區(qū)滿會出現(xiàn)緩存溢出異常;buffer取值none時(shí)該屬性無法設(shè)置。(7)isThreadSafe:設(shè)置JSP頁面是否可多線程訪問,默認(rèn)true;(8)info:JSP頁面設(shè)置一個(gè)常用且經(jīng)常修改的字符串值,可通過getServletInfo()方法調(diào)用。2.6.2 include指令標(biāo)記 在該指令處靜態(tài)插入一個(gè)文件
7、插入的jsp文件中,page指令的contentType屬性的值要與原文件保持一致。2.7 JSP動作標(biāo)記(動態(tài))2.7.1 param動作標(biāo)記 為其他標(biāo)記以名值對的形式傳遞參數(shù)不能單獨(dú)使用,只能作為include、forward和plugin動作的子標(biāo)記使用。2.7.2 include動作標(biāo)記 動態(tài)加載文件 或param子標(biāo)記注include指令標(biāo)記與include動作標(biāo)記的區(qū)別:include指令標(biāo)記:編譯時(shí)處理文件,依賴于當(dāng)前JSP頁面,執(zhí)行速度快;include動作標(biāo)記:運(yùn)行時(shí)處理文件,可使用param子標(biāo)記靈活處理,執(zhí)行速度慢;2.7.3 forward動作標(biāo)記 頁面重定向 或par
8、am子標(biāo)記地址不變,屬于服務(wù)器端的跳轉(zhuǎn),可用param子標(biāo)記向跳轉(zhuǎn)頁面?zhèn)鲄?;轉(zhuǎn)向的文件可以使用request內(nèi)置對象獲取param子標(biāo)記的name屬性的值2.7.4 plugin動作標(biāo)記 加載Java plugin插件,運(yùn)行Java applet小程序提示用戶瀏覽器是否支持插件下載的信息2.7.5 useBean動作標(biāo)記 創(chuàng)建、使用JavaBean(見第七章)習(xí)題二:T2:兩次(Java程序片在多線程中獨(dú)立運(yùn)行)T3:不允許,允許(contentType屬性只能指定一個(gè)值)T4:第一個(gè)用戶顯示sum的值為610,第二個(gè)用戶顯示sum的值為610+600=1210。T6:見2.7.2注三、Tag
9、文件與Tag標(biāo)記使用Tag文件的優(yōu)點(diǎn):(1)代碼復(fù)用(2)數(shù)據(jù)處理與數(shù)據(jù)顯示分離,有利于頁面維護(hù);用戶不能通過Web服務(wù)目錄直接訪問Tag文件。3.1 Tag文件的結(jié)構(gòu)(tag指令見3.4.1節(jié))tag文件內(nèi)容,要求同jsp文件3.2 Tag文件的存儲目錄 Webapps目錄WEB-INFtags3.3 Tag標(biāo)記3.3.1 Tag標(biāo)記與Tag文件 JSP頁面必須通過調(diào)用Tag標(biāo)記調(diào)用Tag文件 或標(biāo)記體注此處“對象”指的是JSP文件向Tag文件傳遞的參數(shù)名3.3.2 Tag標(biāo)記的使用使用Tag標(biāo)記調(diào)用Tag文件前,需要使用taglib指令引入Web服務(wù)目錄下的標(biāo)記庫:若干個(gè)Tag文件所對應(yīng)的
10、Tag標(biāo)記組成一個(gè)標(biāo)記庫,標(biāo)記庫可以有若干個(gè),引入標(biāo)記庫后,可以使用帶前綴的Tag標(biāo)記調(diào)用Tag文件。注(1)標(biāo)記庫必須以/WEB-INF/tags開頭; (2)Tag文件中聲明的變量,會在Tag文件執(zhí)行完畢后立即釋放內(nèi)存空間。JSP處理Tag標(biāo)記的原理:(1)Tag文件被首次調(diào)用或被修改時(shí),JSP依次將該文件轉(zhuǎn)譯(java文件)、編譯(.class字節(jié)碼文件)并執(zhí)行;(2)Tag文件已經(jīng)編譯成字節(jié)碼文件時(shí),JSP直接執(zhí)行該文件。3.3.3 Tag標(biāo)記的標(biāo)記體 動態(tài)向Tag文件傳遞信息標(biāo)記體Tag文件通過使用來處理從jsp文件傳遞過來的標(biāo)記體。(將Tag文件中的doBody標(biāo)記替換成jsp文件
11、中的標(biāo)記體)3.4 Tag文件中的常用命令3.4.1 tag指令 指定tag文件某些屬性的值也可以使用多個(gè)tag指令分別指定tag文件各個(gè)屬性的值tag指令的屬性:(1)body-content:JSP中的Tag標(biāo)記是否有標(biāo)記體,以及標(biāo)記體內(nèi)容的類型: empty:Tag標(biāo)記無標(biāo)記體; tagdependent:Tag標(biāo)記可以有標(biāo)記體,且標(biāo)記體按純文本處理; scriptless(默認(rèn)):Tag標(biāo)記可以有標(biāo)記體,但標(biāo)記體中不能有Java程序片;(2)language:Tag文件使用的腳本語言,與JSP頁面中的language屬性類似;(3)import:向Tag文件引入Java核心包中的類,與
12、同JSP頁面import屬性類似;(4)pageEncoding:指定Tag文件字符編碼,默認(rèn)值為ISO-8859-1;3.4.2 include指令:與JSP頁面中的include指令類似。3.4.3 attribute指令 接收從JSP頁面Tag標(biāo)記中傳來的對象(參數(shù))name:從JSP頁面的Tag標(biāo)記傳遞過來的對象名(必須有);require: true:JSP頁面必須傳遞該對象,若沒有傳遞則產(chǎn)生錯(cuò)誤; false(默認(rèn)):JSP頁面可以不傳遞該對象;type:傳遞對象的類型,必須帶上包名,如java.lang.String(默認(rèn));注(1)Tag文件中定義的變量名與attribute指
13、令接收的對象名相同時(shí),變量將覆蓋對象名,使其失效。(2)標(biāo)記和attribute指令的區(qū)別: 標(biāo)記是通過替換的方式接收J(rèn)SP頁面?zhèn)鬟f的信息; attribute指令是通過傳值的方式接收J(rèn)SP頁面?zhèn)鬟f的信息; 標(biāo)記接收傳遞信息的類型大部分是字符串; attribute指令可以接收除字符串外其他類型的對象; 標(biāo)記可以接收J(rèn)ava程序片,而attribute指令不可以。3.4.4 variable指令 Tag文件通過該指令向JSP頁面返回對象1. 格式:name-given:同attribute指令中的name屬性;variable-class:同attribute指令中的type屬性;scope:
14、 AT_BEGIN:在Tag標(biāo)記開始后就可使用; NESTED:只能在Tag標(biāo)記體內(nèi)使用;AT_BEGINNESTEDAT_ENDHello World!. AT_END:在Tag標(biāo)記結(jié)束后才能使用。2. 對象的返回:除了要使用variable指令外,Tag文件還需要調(diào)用Tomcat中的內(nèi)置對象jspContext的setAttribute方法,將對象名和對象引用(對象值)存儲到j(luò)spContext中,JSP頁面才能使用該對象。jspContext.setAttribute(對象名,對象引用);注(1)若JSP定義的變量名與variable指令返回的對象名相同,Tag文件將出現(xiàn)編譯錯(cuò)誤。(2)
15、若attribute指令接收的對象名與variable指令返回的對象名相同,Tag文件也會出現(xiàn)編譯錯(cuò)誤。3.4.5 taglib指令 與JSP頁面的taglib指令類似Tag文件也可以引入標(biāo)記庫,通過tag標(biāo)記引用其他Tag文件(Tag文件的嵌套調(diào)用);習(xí)題三:T1:不可以(用戶不能通過Web服務(wù)目錄直接訪問Tag文件)T2:Webapps目錄WEB-INFtags或該路徑下的自定義子目錄四、JSP內(nèi)置對象HTTPWWW底層協(xié)議介紹:用戶端瀏覽器服務(wù)端服務(wù)器請求(Request)響應(yīng)(Response)瀏覽器按照HTTP協(xié)議發(fā)出的請求包括請求行、HTTP頭和信息體:(1)請求行:規(guī)定了請求方法
16、(如GET、POST等)、請求資源及HTTP版本;(2)HTTP頭:提供信息體的附加信息及請求來源;(3)信息體:可包含HTML表單的內(nèi)容。服務(wù)器收到請求時(shí),返回HTTP響應(yīng),包括狀態(tài)行,響應(yīng)HTTP頭和響應(yīng)信息體:(1)狀態(tài)行:說明所使用的協(xié)議、狀態(tài)代碼(如404)及文本信息;(2)響應(yīng)HTTP頭:提供信息體的附加信息及響應(yīng)來源;(3)響應(yīng)信息體:用戶請求的網(wǎng)頁運(yùn)行結(jié)果。4.1 request對象 獲取用戶提交的信息request.getParameter(表單中的對象名);注通過表單標(biāo)簽提交信息時(shí),method屬性取值get和post的區(qū)別:get:URL后附加字符串參數(shù),表示提交的變量,
17、以?開始,用&連接,速度快;post:以名值對的形式將數(shù)據(jù)存放在HTTP請求報(bào)頭尾部,不在URL顯示,安全。4.1.1 獲取用戶提交的信息使用變量獲取request對象的信息并處理,當(dāng)JSP執(zhí)行字節(jié)碼文件時(shí)會認(rèn)為該變量對象值為空,從而提示空指針異常??赏ㄟ^判斷和初始化變量來消除異常:if (var = null) var = “”;4.1.2 處理漢字信息用戶提交的漢字字符會出現(xiàn)亂碼,應(yīng)利用字節(jié)數(shù)組來對漢字進(jìn)行編碼轉(zhuǎn)換。byte b = str.getBytes(“iso-8859-1”);str = new String(b);4.1.5 處理HTML標(biāo)記String items = req
18、uest.getParameter(“item”); / 復(fù)選框返回字符串?dāng)?shù)組4.2 response對象 動態(tài)響應(yīng)用戶請求4.2.1 動態(tài)響應(yīng)contentType屬性response.setContentType(jsp文件page指令contentType屬性的值);4.2.2 response的HTTP文件頭response.addHeader (響應(yīng)HTTP頭名,響應(yīng)值);response.setHeader (響應(yīng)HTTP頭名,響應(yīng)值);response.getHeader (響應(yīng)HTTP頭名,響應(yīng)值);如:response.setHeader (Refresh,5;url=跳轉(zhuǎn)地
19、址);可以實(shí)現(xiàn)5秒后跳轉(zhuǎn)指定頁面;response.getHeader(referer);將返回引用該頁面的頁面地址。4.2.3 response重定向response.sendRedirect (URL);注與forward指令不同的是,使用response對象重定向的地址會改變,是客戶端的跳轉(zhuǎn),不傳參。4.2.4 response的狀態(tài)行response.setStatus (int n);n的取值:1xx:實(shí)驗(yàn)用;2xx:請求成功;3xx:需進(jìn)一步動作;4xx:瀏覽器請求失??;5xx:服務(wù)器錯(cuò)誤;4.3 session對象 在一次會話中保存用戶提交的信息會話:從用戶訪問服務(wù)器的Web服務(wù)
20、目錄,到用戶離開該目錄的過程。4.3.1 session對象的IdJSP引擎為每個(gè)線程的用戶分配一個(gè)Session對象的Id字符串,存放在用戶的Cookies中,可通過session.getId();獲取。同一用戶在不同服務(wù)目錄(網(wǎng)站)的session不同。需要tomcat的session對象和客戶端的cookies支持。4.3.2 session對象與URL重寫URL重寫:用戶從一個(gè)頁面鏈接到另一頁面時(shí),通過向URL添加參數(shù),將用戶session對象的ID傳遞給新頁面。String str = response.encodeRedirectURL(URL);FORM action= meth
21、od=post name=form4.3.3 session對象存儲數(shù)據(jù)session.setAttribute(key,Obj value); / 新設(shè)置的同關(guān)鍵字值會覆蓋舊值session.getAttribute(key);session.getAttributeName();/ 返回枚舉對象,使用nextElements()遍歷對象關(guān)鍵字session.getCreationTime();session.removeAttribute(key);4.3.4 在Tag文件中使用session對象4.3.5 session對象的生存期限session對象的生存期限取決于:(1)是否調(diào)用了i
22、nvalidate()方法使其無效;(2)是否達(dá)到了最長“發(fā)呆”時(shí)間(兩次請求發(fā)送之間的間隔,可通過web.xml或setMaxInactiveInterval()方法設(shè)置,當(dāng)設(shè)置為負(fù)數(shù)時(shí),表示發(fā)呆時(shí)間不受限制);(3)服務(wù)器是否被關(guān)閉;4.4 out對象 輸出數(shù)據(jù)out.println(數(shù)據(jù)類型);4.5 application對象 在同一Web服務(wù)目錄下為所有用戶所共享;4.5.1 application對象的常用方法:同Session對象;習(xí)題四:T1:C(復(fù)選框返回字符串?dāng)?shù)組)T4:實(shí)現(xiàn)用戶的重定向。(見4.2.3節(jié))T5:(1)不同。(2)相同。(3)可能消失。(4)可能消失(見4.
23、3.1和4.3.5節(jié))六、在JSP中使用數(shù)據(jù)庫1.JDBC是什么?有什么作用?(P146)答:JDBC是用Java語言編寫的數(shù)據(jù)庫驅(qū)動程序,它可以調(diào)用本地的JDBC-數(shù)據(jù)庫驅(qū)動程序和響應(yīng)的數(shù)據(jù)庫建立連接。七、JSP與JavaBeanJavaBean是一種Java類,通過封裝屬性和方法稱為具有某種功能或者處理某個(gè)業(yè)務(wù)的對象,簡稱Bean。7.1 編寫使用JavaBean1. 編寫bean:為使JSP引擎識別bean對象的屬性和方法,在類的方法命名上需要遵守以下規(guī)則:(1)為類的成員變量提供兩個(gè)操作方法: public Type getXxx();/ 獲取成員變量 public void setXxx(T
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度海外人文與社會科學(xué)留學(xué)合同
- 二零二五年度集體勞動合同在文化創(chuàng)意產(chǎn)業(yè)中的實(shí)踐
- 二零二五年度公司員工綠色環(huán)保項(xiàng)目借款協(xié)議
- 二零二五年度租賃地產(chǎn)租賃合同終止條件合同
- 2025年度股票代持業(yè)務(wù)合作協(xié)議書
- 二零二五年度旅游度假區(qū)物業(yè)管理權(quán)交接書
- 二零二五年度股東權(quán)益變更及股份分割協(xié)議書
- 二零二五年度甲方解除旅游服務(wù)合同的解除條件和游客權(quán)益保障
- 第四章、無輻射躍遷
- 2025年廣州貨運(yùn)從業(yè)資格證500道題目及答案
- 架空絕緣配電線路設(shè)計(jì)規(guī)范
- 兩位數(shù)除以一位數(shù)(有余數(shù))計(jì)算題200道
- 教科版-六年級科學(xué)下冊制作校園生物分布圖課件
- 農(nóng)林行業(yè)就業(yè)現(xiàn)狀分析
- 《高一數(shù)學(xué)三角函數(shù)誘導(dǎo)公式》課件
- 納米材料在環(huán)境污染治理中的應(yīng)用
- 2024版全文:中國二型糖尿病防治全指南
- 玄武巖纖維簡介演示
- 決策氣象服務(wù)流程
- 警惕冒充客服詐騙如何識別和避免客服騙局
- 無人機(jī)法律法規(guī)與安全飛行 第2版 課件 第4章 無人機(jī)法規(guī)與安全
評論
0/150
提交評論