第11章 JSP技術(shù)基礎(chǔ)_第1頁(yè)
第11章 JSP技術(shù)基礎(chǔ)_第2頁(yè)
第11章 JSP技術(shù)基礎(chǔ)_第3頁(yè)
第11章 JSP技術(shù)基礎(chǔ)_第4頁(yè)
第11章 JSP技術(shù)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第11章JSP技術(shù)基礎(chǔ)1頁(yè)主要內(nèi)容網(wǎng)絡(luò)應(yīng)用的系統(tǒng)結(jié)構(gòu)J2EE技術(shù)簡(jiǎn)介JSP技術(shù)概述JSP基本語(yǔ)法JSP標(biāo)準(zhǔn)動(dòng)作JSP的內(nèi)置對(duì)象疑難問(wèn)題解答本章小結(jié)實(shí)踐檢驗(yàn)2頁(yè)11-1網(wǎng)絡(luò)應(yīng)用的系統(tǒng)結(jié)構(gòu)兩層結(jié)構(gòu)三層結(jié)構(gòu)網(wǎng)絡(luò)應(yīng)用構(gòu)架中的一些補(bǔ)充概念3頁(yè)11-1-1兩層結(jié)構(gòu)傳統(tǒng)的網(wǎng)絡(luò)應(yīng)用通常是建立在兩層結(jié)構(gòu)基礎(chǔ)上的,所謂兩層結(jié)構(gòu),即客戶機(jī)/服務(wù)器(Client/Server)兩層,這類應(yīng)用系統(tǒng)往往需要在客戶端安裝相應(yīng)的應(yīng)用程序,一旦應(yīng)用邏輯即客戶需求發(fā)生變化,需要對(duì)客戶端程序進(jìn)行修改和升級(jí)。4頁(yè)11-1-2三層結(jié)構(gòu)第一層——用戶服務(wù)層,提供信息交互、瀏覽定位、保證用戶界面的一致性和完整性。第二層——業(yè)務(wù)服務(wù)和其他的“中間”服務(wù),制訂維護(hù)和共享業(yè)務(wù)邏輯,從數(shù)據(jù)中生成需要的業(yè)務(wù)信息,保證業(yè)務(wù)信息的合法性和一致性,使原始數(shù)據(jù)和用戶需求的信息相互獨(dú)立。第三層——數(shù)據(jù)服務(wù),數(shù)據(jù)定義,永久數(shù)據(jù)的存儲(chǔ)和檢索,數(shù)據(jù)一致性的保證。簡(jiǎn)單地說(shuō),第一層就是瀏覽器,是用戶惟一不變的客戶端程序,用戶不再需要學(xué)習(xí)使用各種不同的應(yīng)用程序,只要會(huì)用瀏覽器就能應(yīng)付各種網(wǎng)絡(luò)應(yīng)用。5頁(yè)三層結(jié)構(gòu)的特點(diǎn)把應(yīng)用邏輯從客戶機(jī)中分離出來(lái),使客戶端程序簡(jiǎn)單、標(biāo)準(zhǔn),使用方便,同時(shí)提供豐富的交互式的信息分布形式。系統(tǒng)維護(hù)簡(jiǎn)單,擺脫了由于客戶有多個(gè)應(yīng)用而造成的復(fù)雜運(yùn)行環(huán)境的維護(hù)。應(yīng)用邏輯的改變即不影響底層數(shù)據(jù),也不影響用戶的使用。6頁(yè)11-1-3網(wǎng)絡(luò)應(yīng)用構(gòu)架中的一些補(bǔ)充概念Web服務(wù)器HTTP協(xié)議靜態(tài)網(wǎng)頁(yè)與動(dòng)態(tài)網(wǎng)頁(yè)7頁(yè)Web服務(wù)器Web服務(wù)器即萬(wàn)維網(wǎng)服務(wù)器是瀏覽網(wǎng)頁(yè)需要的最根本的后臺(tái)支持,它能夠接收來(lái)自客戶端(通常都是用戶使用的瀏覽器)的請(qǐng)求,并根據(jù)請(qǐng)求中的某些信息做出相應(yīng)的應(yīng)答。8頁(yè)HTTP協(xié)議絕大多數(shù)的基于Web的J2EEClient都使用HTTP協(xié)議與J2EE服務(wù)器通訊。9頁(yè)HTTP請(qǐng)求的常見方法get——獲取URL指定的資源head——返回URL指定資源的頭部post——向服務(wù)器發(fā)送一組沒(méi)有長(zhǎng)度限制的數(shù)據(jù)put——在URL指定的資源中存儲(chǔ)數(shù)據(jù)delete——在URL指定的資源中刪除數(shù)據(jù)options——返回服務(wù)器支持HTTP方法trace——返回trace請(qǐng)求的頭部10頁(yè)HTTP應(yīng)答狀態(tài)代碼404——找不到請(qǐng)求的資源401——請(qǐng)求需要HTTP認(rèn)證403——無(wú)訪問(wèn)該資源權(quán)限500——服務(wù)器內(nèi)部錯(cuò)誤503——服務(wù)器忙11頁(yè)靜態(tài)網(wǎng)頁(yè)與動(dòng)態(tài)網(wǎng)頁(yè)對(duì)網(wǎng)絡(luò)有點(diǎn)熟悉的人都知道,HTML是編制網(wǎng)頁(yè)的基本語(yǔ)言,但它只能用于靜態(tài)的網(wǎng)頁(yè)。當(dāng)今的Web已經(jīng)不再是像報(bào)紙雜志一樣的靜態(tài)信息發(fā)布平臺(tái),越來(lái)越多的企業(yè)應(yīng)用逐步移植到Web上,這些應(yīng)用要求Web頁(yè)面必須是動(dòng)態(tài)的。12頁(yè)常見的動(dòng)態(tài)頁(yè)面技術(shù)CGI(CommonGatewayInterfaceASP(ActiveServerPages)PHP(HypertextPreprocessor,超文本預(yù)處理器JSP(JavaServerPages)13頁(yè)11-2J2EE技術(shù)簡(jiǎn)介J2EE的結(jié)構(gòu)J2EE中的主要組件14頁(yè)11-2-1J2EE的結(jié)構(gòu)客戶層(ClientTier)J2EE應(yīng)用可以是基于Web的,也可以是不基于Web的。Web層J2EEWeb組件可以由JSP頁(yè)面、基于Web的Applet以及顯示HTML頁(yè)面的Servlets組成。這些組件和Web服務(wù)器一起,為客戶請(qǐng)求提供應(yīng)答服務(wù),其中包括界面服務(wù)、流程控制、安全等等,并負(fù)責(zé)將需要操作企業(yè)數(shù)據(jù)的請(qǐng)求發(fā)送給后面的層次,由內(nèi)部其他組件完成,并負(fù)責(zé)將結(jié)果按要求返回。業(yè)務(wù)層負(fù)責(zé)解決或滿足某個(gè)特定業(yè)務(wù)領(lǐng)域(如銀行、零售或金融業(yè))需要的業(yè)務(wù)邏輯,通常由一些特定的組件來(lái)完成,即EnterpriseJavaBeans(EJB)。企業(yè)信息系統(tǒng)層(EIS)企業(yè)信息系統(tǒng)層運(yùn)行企業(yè)信息系統(tǒng)軟件,并負(fù)責(zé)存儲(chǔ)企業(yè)數(shù)據(jù)。15頁(yè)J2EE的多層應(yīng)用結(jié)構(gòu)16頁(yè)11-2-2J2EE中的主要組件ServletApplet的出現(xiàn)就是為了實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面,但它只能利用客戶端平臺(tái)功能,其操作要受到客戶端的限制,所能利用到的數(shù)據(jù)也非常有限。JavaBeansJavaBeans也是一些Java類,它通常用來(lái)實(shí)現(xiàn)一些比較常用的簡(jiǎn)單功能,并可以很容易地被重用或者是插入其他應(yīng)用程序中去。EJBEJB(EnterpriseJavaBeans)是一種非常復(fù)雜的JavaBeans,它必須定義一些特定的和客戶化的方法和屬性,來(lái)實(shí)現(xiàn)企業(yè)的核心業(yè)務(wù)邏輯。XMLXML(ExtensibleMarkupLanguage,可擴(kuò)展標(biāo)記語(yǔ)言)是一種用于表達(dá)和描述文本數(shù)據(jù)的語(yǔ)言,所有支持XML(APIXML)應(yīng)用程序接口的程序或者工具都能識(shí)別用XML描述的數(shù)據(jù)。17頁(yè)JavaBeans的變量必須遵循的原則可讀寫、只讀、只寫。簡(jiǎn)單,也就是說(shuō)JavaBeans的變量應(yīng)該是單值或者數(shù)組。這些公共屬性必須能夠通過(guò)公共方法來(lái)訪問(wèn)。JavaBeans的方法必須遵循的原則如下:對(duì)于所有可讀的屬性,Beans必須提供相應(yīng)的方法以供外部讀取該屬性的值。18頁(yè)EJB需要三段Java程序遠(yuǎn)程接口(RemoteInterface)遠(yuǎn)程接口又是一個(gè)Interface,用于定義客戶可能調(diào)用的與業(yè)務(wù)相關(guān)的方法,提供了貨幣轉(zhuǎn)換、加入購(gòu)物車、購(gòu)買、付款等業(yè)務(wù)接口。本地接口(HomeInterface)本地接口也是一個(gè)Interface,用來(lái)為用戶提供創(chuàng)建、查找以及刪除一個(gè)EJB對(duì)象,即為客戶提供一個(gè)控制EJB的接口。EnterpriseBean它是一個(gè)EnterpriseBean類對(duì)象,是真正實(shí)現(xiàn)業(yè)務(wù)邏輯的地點(diǎn),即實(shí)現(xiàn)RemoteInterface中定義的方法。以及與HomeInterface中定義的方法中真正調(diào)用的方法,如初始化、退出等。19頁(yè)11-3JSP技術(shù)概述動(dòng)靜分離它將Web頁(yè)面中有關(guān)輸出格式的表達(dá)部分與后端數(shù)據(jù)相關(guān)的業(yè)務(wù)邏輯部分有效的分離,使程序員從繁重的格式設(shè)計(jì)中解脫出來(lái),可以專心從事業(yè)務(wù)邏輯的實(shí)現(xiàn)工作,并可以將頁(yè)面設(shè)計(jì)工作真正交付給美工來(lái)完成,使應(yīng)用開發(fā)效率空前提高。簡(jiǎn)單易用由于上述特性,JSP本身的結(jié)構(gòu)清晰,邏輯簡(jiǎn)單,可以很容易被非專業(yè)人員掌握,便于開發(fā)工作的開展。可移植性由于Java本身的平臺(tái)無(wú)關(guān)性,基于Java的JSP技術(shù)也同樣繼承了可移植性的特點(diǎn),只要服務(wù)器端支持Java,JSP就可以運(yùn)行。20頁(yè)11-3JSP技術(shù)概述JSP的技術(shù)原理JSP與ASPJSP與Servlet的比較JSP運(yùn)行環(huán)境的配置21頁(yè)11-3-1JSP的技術(shù)原理JSP的實(shí)質(zhì)JSP的執(zhí)行過(guò)程JSP的兩種訪問(wèn)模型22頁(yè)JSP的執(zhí)行過(guò)程23頁(yè)JSP的兩種訪問(wèn)模型模型一JSP負(fù)責(zé)處理瀏覽器端發(fā)送來(lái)的客戶請(qǐng)求并負(fù)責(zé)向用戶返回結(jié)果,其中包含的業(yè)務(wù)邏輯通過(guò)調(diào)用JavaBean來(lái)實(shí)現(xiàn),而JavaBean負(fù)責(zé)與企業(yè)數(shù)據(jù)庫(kù)的交互。模型二模型二是一種遵循MVC(Model-View-Controller,模型-視圖-控制者)模型的先進(jìn)思想。24頁(yè)

JSP的第一種訪問(wèn)方式25頁(yè)

JSP的第二種訪問(wèn)方式26頁(yè)11-3-2JSP與ASP27頁(yè)11-3-3JSP與Servlet的比較Servlet向頁(yè)面輸出只能使用out.println()方法,而不能像在JSP中那樣,把原封不動(dòng)的HTML標(biāo)記引入程序中。28頁(yè)支持JSP的Web服務(wù)器29頁(yè)11-3-4JSP運(yùn)行環(huán)境的配置“獨(dú)立”表示該軟件可以獨(dú)立作為Web服務(wù)器,而“插件”表示該軟件可以作為其他Web服務(wù)器,如Microsoft公司的IIS等的插件運(yùn)行,從而使更多的Web服務(wù)器支持JSP。30頁(yè)11-4JSP基本語(yǔ)法變量聲明與表達(dá)式程序段基本指令將JSP與HTML結(jié)合起來(lái)本節(jié)綜合實(shí)例31頁(yè)11-4-1變量聲明與表達(dá)式變量聲明表達(dá)式32頁(yè)變量聲明JSP變量聲明的語(yǔ)法格式如下:<%!聲明;[聲明;……]%>解釋:聲明必須以分號(hào)結(jié)尾。<%!和%>中可以一次性聲明多個(gè)變量,之間用分號(hào)分隔。聲明的內(nèi)容只在一個(gè)頁(yè)面內(nèi)有效。也可以在這個(gè)地方做一個(gè)完整的類聲明。33頁(yè)表達(dá)式JSP表達(dá)式的語(yǔ)法格式如下:<%=表達(dá)式%>解釋:表達(dá)式通常用于計(jì)算并輸出變量值,在頁(yè)面設(shè)計(jì)中,經(jīng)常會(huì)把它嵌入在HTML中,來(lái)顯示與用戶相關(guān)的個(gè)性化信息。34頁(yè)11-4-2程序段程序段語(yǔ)法結(jié)構(gòu)注釋35頁(yè)程序段語(yǔ)法結(jié)構(gòu)<%程序代碼%>解釋:程序段中只能包含符號(hào)Java語(yǔ)法的代碼,不允許出現(xiàn)HTML標(biāo)記、JSP標(biāo)記、JSP指令等元素。程序段中也可以對(duì)變量進(jìn)行聲明,就像在編寫普通的Java程序一樣,但最好對(duì)變量進(jìn)行初始化,否則,有些服務(wù)器可能會(huì)出錯(cuò)。36頁(yè)注釋JSP注釋的語(yǔ)法結(jié)構(gòu)如下:<%--注釋--%>解釋:注釋的部分在系統(tǒng)進(jìn)行編譯時(shí)將被忽略。在瀏覽器端查看源文件時(shí),看不到用JSP注釋標(biāo)記注釋掉的語(yǔ)句,而使用HTML注釋標(biāo)記(<!--注釋-->)注釋掉的,還能在客戶端的源文件中看到。程序段中的注釋與Java語(yǔ)法相同。在代碼中適當(dāng)增加注釋是提高程序可讀性的良好習(xí)慣。37頁(yè)11-4-3基本指令Page指令include指令38頁(yè)P(yáng)age指令Page指令的語(yǔ)法結(jié)構(gòu)如下:<%@page[language="java"][extends="package.class"][import="{package.class|.*},…"][session="true|false"][buffer="none|8kb|sizekb"][autoFlush="true|false"][isThreadSafe="true|false"][info="text"][errorPage="telativeURL"][contentType="mimeType[;charset=characterSet]"|"text/html;charset=ISO-8859-1"][isErrorPage="true|false"]%>解釋:page指令用于給JSP文件中的全局屬性賦值,它的賦值動(dòng)作能夠作用于整個(gè)頁(yè)面,可以寫在文件的任何位置,不過(guò)建議讀者最好寫在最前面。39頁(yè)屬性import="package.class"或import="package.class1,…,package.classN"contenType="MINE-Type"或contentType="MINE-Type;charset=Character-Set"isThreadSafe="true|false"

session="true|false"buffer="sizekb|none"autoflush="true|false"extends="package.class"info="message"errorPage="URL"Page指令

="true|false"language="java"40頁(yè)include指令include指令的語(yǔ)法格式如下:<%@includefile="relativeURL"%>解釋:relativeURL指欲引入文件的相對(duì)路徑。41頁(yè)11-4-4將JSP與HTML結(jié)合起來(lái)將JSP的Java風(fēng)格代碼嵌入HTML是非常簡(jiǎn)單的,基本上也沒(méi)有什么規(guī)則可言。JSP代碼的目的是利用Java代碼從服務(wù)器中獲取并計(jì)算數(shù)據(jù),然后放到頁(yè)面上顯示,也就是說(shuō),它負(fù)責(zé)動(dòng)態(tài)頁(yè)面內(nèi)容,HTML的任務(wù)是將靜態(tài)的顯示內(nèi)容直接作為文本輸出。兩者在編寫頁(yè)面時(shí)可以隨意互相嵌入,但過(guò)于頻繁的轉(zhuǎn)換可能會(huì)影響頁(yè)面的響應(yīng)速度。如果一個(gè)JSP變量的計(jì)算過(guò)程比較復(fù)雜,最好是先計(jì)算好,再用一個(gè)比較簡(jiǎn)單的表達(dá)式直接將結(jié)果輸出,而不要把復(fù)雜的計(jì)算都放在表達(dá)式里。事實(shí)上,JSP的輸出功能本身能夠?qū)㈧o態(tài)內(nèi)容的顯示都實(shí)現(xiàn)出來(lái),但這樣的程序結(jié)構(gòu)不夠清晰,也不便表達(dá)與業(yè)務(wù)邏輯的分離。42頁(yè)11-4-5本節(jié)綜合實(shí)例我們編寫一個(gè).jsp頁(yè)面,將這一節(jié)中所提到的所有內(nèi)容包括進(jìn)來(lái),其中有一些內(nèi)容將在后面進(jìn)行研究。請(qǐng)注意程序中的語(yǔ)法元素。這個(gè)程序的功能是在屏幕上請(qǐng)用戶輸入姓名,然后向用戶問(wèn)好。先來(lái)看一下源代碼。43頁(yè)11-5JSP標(biāo)準(zhǔn)動(dòng)作jsp:include動(dòng)作使用JavaBeanjsp:forward動(dòng)作jsp:plugin動(dòng)作44頁(yè)include動(dòng)作的語(yǔ)法include動(dòng)作的語(yǔ)法格式如下:<jsp:includepage="{relativeURL|<%=expression%>}"flush="true"/>或者<jsp:includepage="{relativeURL|<%=expression%>}"flush="true"><jsp:paramname="parameterName”value="{parameterValue|<%=expression%>}"/>]+</jsp:include>}該動(dòng)作把指定文件插入正在生成的頁(yè)面。前面已經(jīng)介紹過(guò)include指令,它是在JSP文件被編譯時(shí)引入文件,而這個(gè)動(dòng)作是在頁(yè)面被請(qǐng)求的時(shí)候引入文件。這樣做可能比前面講的指令效率低一些,但靈活性比較好,即使被引入的文件做過(guò)修改,也不需要重新編譯主JSP文件。45頁(yè)include動(dòng)作的屬性include動(dòng)作的屬性如下:page={relativeURL|<%=expression%>}被包含文件的相對(duì)路徑或者用一個(gè)表達(dá)式的值來(lái)代替表示這個(gè)相對(duì)路徑。flush=“true”通常情況下,此屬性值必須為true。<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"><jsp:param>子句能夠?yàn)橐氲奈募鬟f參數(shù)。46頁(yè)11-5-2使用JavaBeanjsp:useBean動(dòng)作jsp:setProperty動(dòng)作jsp:getProterty動(dòng)作47頁(yè)jsp:useBean動(dòng)作jsp:useBean動(dòng)作的語(yǔ)法格式如下:<jsp:useBeanid="beanInstanceName"scope="scope"{class="package.class"type="package.class"beanName="{package.class|<%=expression%>}"type="package.class"}{/>|>otherelements</jsp:useBean>}解釋:該動(dòng)作用來(lái)裝載一個(gè)將JSP頁(yè)面中使用的JavaBean。這個(gè)功能非常有用,因?yàn)樗沟梦覀兛梢园l(fā)揮Java組件重用的優(yōu)勢(shì)。其含義是創(chuàng)建一個(gè)package.class的實(shí)例,然后把它綁定到變量id上,并使用scope定義Bean的作用范圍。屬性:id=“beanInstanceName”用來(lái)綁定Bean實(shí)例的變量。class|type=“package.class”表明該Bean是對(duì)哪個(gè)類的實(shí)例化。scope=“page|request|session|application”48頁(yè)jsp:setProperty動(dòng)作jsp:setProperty動(dòng)作的語(yǔ)法格式如下:<jsp:setPropertyname="beanInstanceName"{property="*"|property="propertyName"|[param="parameterName"]|property="propertyName"value="{string|<%=expression%>}"}/>屬性:name=“beanInstanceName”property=“*”或者“propertyName”value=“string|<%=expression>”param=“parameterName”49頁(yè)jsp:getProterty動(dòng)作jsp:getProterty動(dòng)作的語(yǔ)法格式如下:<jsp:getProtertyname="beanInstanceName"property="protertyName"/>解釋:這個(gè)動(dòng)作提取指定Bean屬性的值,轉(zhuǎn)換成字符串,然后輸出。按上文提到的某個(gè)Bean有一個(gè)類型為X的屬性myProperty時(shí),它必然有一個(gè)返回值類型為X的getMyProperty()方法,getProperty使用的就是這個(gè)方法。屬性:name=“beanInstanceName”property=“propertyName”50頁(yè)11-5-3jsp:forward動(dòng)作jsp:forward動(dòng)作的語(yǔ)法格式如下:<jsp:forwardpage="{relativeURL|<%=expression%>}"{/>|[<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>]</jsp:forward>}解釋:該動(dòng)作把請(qǐng)求轉(zhuǎn)到另外的頁(yè)面,jsp:forward以下的代碼將不能被執(zhí)行。屬性:page=“relativeURL|<%=expression%>”param51頁(yè)11-5-4jsp:plugin動(dòng)作jsp:plugin動(dòng)作的語(yǔ)法格式如下:<jsp:plugintype="bean|applet"code="classFileName"codebase="classFileDirectoryName"[name="instanceName"][archive="URIToArchive,…"][align="bottom|top|middle|left|right"][height="displayPixels"][width="displayPixels"][hspace="leftRightPixels"][vspace="topBottomPixels"][jreversion="JREVersionNumber|1.1"][nspluginurl="URLToPlugin"][iepluginurl="URLToPlugin"]>[<jsp:params>][<jsp:paramname="parameterName"value="{parameterValue|<%=expression%>}"/>]+</jsp:params>]</jsp:plugin>52頁(yè)解釋:jsp:plugin動(dòng)作用來(lái)根據(jù)瀏覽器的類型,插入通過(guò)Java插件運(yùn)行JavaApplet所必需的object或embed元素。屬性:type=“bean|applet”class=“classFileName”codebase=“classFileDirectoryName”name=“instanceName”archive=“URLToArchive,…”53頁(yè)JSP的內(nèi)置對(duì)象對(duì)象的可見范圍與輸入輸出有關(guān)的內(nèi)置對(duì)象session對(duì)象與上下文有關(guān)的內(nèi)置對(duì)象用于錯(cuò)誤處理的內(nèi)置對(duì)象與Servlet有關(guān)的內(nèi)置對(duì)象54頁(yè)11-6-1對(duì)象的可見范圍page所謂page,就是指在本頁(yè)內(nèi)可見,要利用本頁(yè)可見,就要使用pageContext對(duì)象。requestrequest范圍是指在一個(gè).jsp頁(yè)面的請(qǐng)求到另外一個(gè).頁(yè)面請(qǐng)求時(shí)有效,然后就失效了,也就是說(shuō)在有請(qǐng)求關(guān)系的頁(yè)面之間有效。session與applicationsession的可見范圍在于一個(gè)用戶從登錄到退出之間全部可見,包括正常退出或者由于其他原因,如超時(shí)等非正常結(jié)束用戶與服務(wù)器之間的會(huì)話。55頁(yè)11-6-2與輸入輸出有關(guān)的內(nèi)置對(duì)象request對(duì)象response對(duì)象out對(duì)象56頁(yè)HttpServletRequest定義了訪問(wèn)如下信息的方法參數(shù)主要是那些用于在客戶端與Servlet之間傳送信息的數(shù)據(jù)。對(duì)象屬性主要用于在Servlet容器與Servlet之間,或者協(xié)作的Servlet之間傳遞信息的數(shù)據(jù)。關(guān)于客戶端與Servlet之間通訊協(xié)議的信息。本地信息。57頁(yè)requestpath一般由3部分組成contextpath:是Servlet應(yīng)用程序的根所處的上下環(huán)境,通常由一連串的“/”組成。Servletpath:激活這個(gè)請(qǐng)求的組件別名,其路徑通常由“/”開始。pathinfo:是請(qǐng)求路徑中除了上述兩部分之外的路徑描述。58頁(yè)HTTP請(qǐng)求的組成部分59頁(yè)request對(duì)象一些常用方法60頁(yè)response對(duì)象獲取從服務(wù)器向客戶端發(fā)送的輸出流,如果發(fā)送的是字符信息,使用getWriter()方法,它將返回一個(gè)PrintWriter對(duì)象,如果發(fā)送的是二進(jìn)制信息,則使用getOutputStream()方法,它返回的是ServletOutputStream類對(duì)象。另外,和request一樣,也可以利用ServletOutputStream對(duì)象來(lái)自己管理輸出流。指示由response返回信息的類型,例如text/html。指明是否對(duì)輸出流做緩沖,默認(rèn)情況下,所有輸出流會(huì)馬上被發(fā)送到客戶端。設(shè)置一些本地信息。61頁(yè)out對(duì)象javax.servlet.JspWriter類對(duì)象,用于在服務(wù)器與客戶端之間傳遞信息的輸出流。一般情況下,我們都使用PrintWriter類從服務(wù)器端向客戶端發(fā)送信息,它可以直接把信息輸出到客戶端。然而,就像我們前面提到的例子一樣,在很多情況下,我們需要使用緩沖區(qū),這個(gè)時(shí)候,就需要使用一個(gè)PrintWriter類的使用緩沖的版本的類,它就是JspWriter。JSP允許通過(guò)page指令的buffer屬性調(diào)整緩存的大小,甚至允許關(guān)閉緩存。out一般只在Scriptlet內(nèi)使用,因?yàn)镴SP表達(dá)式是自動(dòng)發(fā)送輸出流的,很少需要顯示地引用out。通常我們都是使用out.println或者out.print()方法在程序中輸出信息。62頁(yè)11-6-3session對(duì)象session的應(yīng)用背景session的使用會(huì)話的生命周期63頁(yè)session的應(yīng)用背景使用cookiecookie是放置在客戶端的一種信息存儲(chǔ)機(jī)制。改寫URL可以把一些標(biāo)識(shí)會(huì)話的數(shù)據(jù)附加到每個(gè)URL的后面,服務(wù)器能夠把該會(huì)話標(biāo)識(shí)和它所保存的會(huì)話數(shù)據(jù)關(guān)聯(lián)起來(lái)。表單隱藏域HTML表單中可以包含下面這樣的輸入域:<inputtype=“hidden”NAME=“session”VALUE=“…”>。64頁(yè)session的使用獲取當(dāng)前請(qǐng)求的會(huì)話對(duì)象獲取和設(shè)置session變量獲取與session自身相關(guān)的信息getIDisNewgetCreationTimegetLastAccessedTimegetMaxInactiveInterval65頁(yè)會(huì)話的生命周期session是有一定的生命周期的,一個(gè)session可以用isNew()方法來(lái)判斷它是否為一個(gè)新的session,所謂新的session就是說(shuō)它已經(jīng)被服務(wù)器產(chǎn)生,但是還沒(méi)有通知客戶端。66頁(yè)11-6-4與上下文有關(guān)的內(nèi)置對(duì)象application初始化參數(shù)與Web環(huán)境相關(guān)的資源參數(shù)-值對(duì)記錄日志pageContext提供了單一API用于管理各類有一定可見范圍的對(duì)象。提供了一些方便的訪問(wèn)公共對(duì)象的方法。提供了獲取JspWriter的機(jī)制。提供了管理session使用方法的機(jī)制。提供了將頁(yè)面指令屬性開放給腳本環(huán)境的機(jī)制。提供了將當(dāng)前請(qǐng)求傳遞給應(yīng)用程序內(nèi)其他組件的方法。提供了錯(cuò)誤處理機(jī)制。67頁(yè)11-6-5用于錯(cuò)誤處理的內(nèi)置對(duì)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論