Java Web 開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn) 課件 第4章 JSP內(nèi)置對(duì)象_第1頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn) 課件 第4章 JSP內(nèi)置對(duì)象_第2頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn) 課件 第4章 JSP內(nèi)置對(duì)象_第3頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn) 課件 第4章 JSP內(nèi)置對(duì)象_第4頁(yè)
Java Web 開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn) 課件 第4章 JSP內(nèi)置對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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)介

第4章JSP內(nèi)置對(duì)象學(xué)習(xí)目的與要求本章主要介紹request、response、out、session、application、pageContext、page、config和exception等內(nèi)置對(duì)象。通過(guò)本章的學(xué)習(xí),理解JSP內(nèi)置對(duì)象的含義,掌握J(rèn)SP內(nèi)置對(duì)象的使用方法?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象request對(duì)象的類(lèi)型為jakarta.servlet.http.HttpServletRequest。當(dāng)客戶端請(qǐng)求一個(gè)JSP頁(yè)面時(shí),JSP頁(yè)面所在的服務(wù)器將客戶端發(fā)出的所有請(qǐng)求信息封裝在內(nèi)置對(duì)象request中,因此使用該對(duì)象就可以獲取客戶端提交的信息?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1.1常用方法序

號(hào)方

法功

說(shuō)

明1ObjectgetAttribute(Stringname)

返回指定屬性的屬性值2EnumerationgetAtrributeNames()

返回所有可用屬性名的枚舉3StringgetCharacterEncoding()

返回字符編碼方式4intgetContentLength()

返回請(qǐng)求體的字節(jié)數(shù)5StringgetContentType()

返回請(qǐng)求體的MIME類(lèi)型6ServletInputStreamgetInputStream()返回請(qǐng)求體中一行的二進(jìn)制流7StringgetParameter(Stringname)返回name指定參數(shù)的參數(shù)值8EnumerationgetParameterNames()

返回可用參數(shù)名的枚舉9String[]getParameterValues(Stringname)

返回包含參數(shù)name的所有值的數(shù)組10StringgetProtochol()

返回請(qǐng)求用的協(xié)議類(lèi)型及版本號(hào)11StringgetServerName()

返回接受請(qǐng)求的服務(wù)器主機(jī)名12intgetServerPort()返回服務(wù)器接受此請(qǐng)求所用的端口號(hào)13StringgetRemoteAddr()

返回發(fā)送此請(qǐng)求的客戶端IP地址14StringgetRemoteHost()

返回發(fā)送此請(qǐng)求的客戶端主機(jī)名15voidsetAttribute(Stringkey,Objectobj)

設(shè)置屬性的屬性值16StringgetRealPath(Stringpath)

返回一虛擬路徑的真實(shí)路徑《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1.1常用方法

StringgetParameter(Stringname)該方法以字符串的形式返回客戶端傳來(lái)的某個(gè)參數(shù)的值,該參數(shù)名由name指定。【例4-1】調(diào)用方法getParameter(String

name)獲取表單信息

String[]getParameterValues(Stringname)該方法以字符串?dāng)?shù)組的形式返回客戶端向服務(wù)器端傳遞的指定參數(shù)名的所有值。【例4-2】調(diào)用方法getParameterValues

(Stringname)獲取表單信息《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1.2request對(duì)象存取數(shù)據(jù)request對(duì)象可以通過(guò)void

setAttribute(String

key,Objectobj)方法將參數(shù)obj指定的對(duì)象保存到request對(duì)象中,key為所保存的對(duì)象指定一個(gè)關(guān)鍵字。若保存的兩個(gè)對(duì)象關(guān)鍵字相同,則先保存的對(duì)象被清除。request對(duì)象可以通過(guò)Object

getAttribute(String

key)方法獲取請(qǐng)求域(如:forward轉(zhuǎn)發(fā))中的關(guān)鍵字為key的對(duì)象(屬性值)。在實(shí)際工程中,request對(duì)象經(jīng)常用于存儲(chǔ)、傳遞本次請(qǐng)求的處理結(jié)果?!纠?-3】編寫(xiě)兩個(gè)JSP頁(yè)面example4_3.jsp和example4_3_1.jsp,在example4_3.jsp頁(yè)面中輸入一個(gè)整數(shù)提交給example4_3_1.jsp頁(yè)面求平方。當(dāng)輸入值非整數(shù)時(shí),在example4_3_1.jsp頁(yè)面中使用request對(duì)象的setAttribute(String

key,Objectobj)方法將錯(cuò)誤消息存儲(chǔ)到request對(duì)象中,同時(shí)使用forward標(biāo)記轉(zhuǎn)發(fā)到example4_3_1.jsp頁(yè)面并顯示錯(cuò)誤消息。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1.3中文亂碼問(wèn)題如果在例4-1的example4_1.jsp頁(yè)面的文本框中輸入中文姓名,那么getValue.jsp頁(yè)面獲得的姓名可能是亂碼。如果出現(xiàn)中文亂碼,可以使用request對(duì)象的setCharacterEncoding(String

code)設(shè)置統(tǒng)一字符編碼,其中參數(shù)code以字符串形式傳入要設(shè)置的編碼格式,但這種方法僅對(duì)于提交方式是post的表單(表單默認(rèn)的提交方式是get)有效。例如:使用該方法解決例4-1中的getValue.jsp頁(yè)面出現(xiàn)的中文亂碼問(wèn)題,需要完成兩件事:首先,將example4_1.jsp中的表單提交方式改為“post”,具體代碼如下:

<formaction="getValue.jsp"method="post">

其次,在getValue.jsp中獲取表單信息之前設(shè)置統(tǒng)一編碼,具體代碼如下:

request.setCharacterEncoding("UTF-8");《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1.4實(shí)踐環(huán)節(jié)——獲取客戶端的基本信息編寫(xiě)1個(gè)JSP頁(yè)面practice4_1.jsp,在該頁(yè)面中使用request的方法獲取客戶端的IP地址、客戶機(jī)名稱、服務(wù)器名稱以及服務(wù)器端口號(hào)?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.2response對(duì)象當(dāng)客戶端請(qǐng)求服務(wù)器的一個(gè)頁(yè)面時(shí),會(huì)提交一個(gè)HTTP請(qǐng)求,服務(wù)器收到請(qǐng)求后,返回HTTP響應(yīng)。request對(duì)象對(duì)請(qǐng)求信息進(jìn)行封裝,與request對(duì)象對(duì)應(yīng)的對(duì)象是response對(duì)象。response對(duì)象的類(lèi)型為jakarta.servlet.http.HttpServletResponse,對(duì)客戶端的請(qǐng)求做出動(dòng)態(tài)響應(yīng)。動(dòng)態(tài)響應(yīng)通常有:動(dòng)態(tài)改變contentType屬性值、設(shè)置響應(yīng)表頭和response重定向?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.2.1動(dòng)態(tài)改變contentType屬性值JSP頁(yè)面用page指令標(biāo)記設(shè)置了頁(yè)面的contentType屬性值,response對(duì)象按照此屬性值的方式對(duì)客戶端做出響應(yīng)。在page指令中只能為contentType屬性指定一個(gè)值。如果想動(dòng)態(tài)改變contentType屬性值,換一種方式來(lái)響應(yīng)客戶端,可以讓response對(duì)象調(diào)用setContentType(String

s)方法來(lái)重新設(shè)置contentType的屬性值?!纠?-4】編寫(xiě)1個(gè)JSP頁(yè)面example4_4.jsp,客戶端通過(guò)單擊頁(yè)面上的不同按鈕,可以改變頁(yè)面響應(yīng)的MIME類(lèi)型。當(dāng)單擊“word”按鈕時(shí),JSP頁(yè)面動(dòng)態(tài)改變contentType的屬性值為application/msword,在內(nèi)置的瀏覽器中,啟用本地的word軟件來(lái)顯示當(dāng)前頁(yè)面內(nèi)容;當(dāng)單擊“excel”按鈕時(shí),JSP頁(yè)面動(dòng)態(tài)改變contentType的屬性值為application/vnd.ms-excel,瀏覽器啟用本地的excel軟件來(lái)顯示當(dāng)前頁(yè)面內(nèi)容。頁(yè)面效果如圖4.1(a)~4.1(c)所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.2.2設(shè)置響應(yīng)表頭response對(duì)象可以通過(guò)方法setHeader(String

name,String

value)設(shè)置指定名字的HTTP文件頭值,以此來(lái)操作HTTP文件頭。如果希望某頁(yè)面每3秒鐘刷新一次,那么在該頁(yè)面中添加如下代碼:response.setHeader("refresh","3");有時(shí)候希望從當(dāng)前頁(yè)面幾秒鐘后自動(dòng)跳轉(zhuǎn)到另一個(gè)頁(yè)面。比如:打開(kāi)one.jsp頁(yè)面3秒鐘后,自動(dòng)跳轉(zhuǎn)到another.jsp頁(yè)面(one.jsp與another.jsp在同一個(gè)Web服務(wù)目錄下)。這該如何實(shí)現(xiàn)呢?只需要為one.jsp設(shè)置一個(gè)響應(yīng)頭即可,也就是在one.jsp頁(yè)面中添加如下代碼:response.setHeader("refresh","3;url=another.jsp");【例4-5】編寫(xiě)1個(gè)JSP頁(yè)面example4_5.jsp,在該頁(yè)面中使用response對(duì)象設(shè)置一個(gè)響應(yīng)頭“refresh”,其值是“3”。那么用戶收到這個(gè)頭之后,該頁(yè)面會(huì)每3秒鐘刷新一次?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.2.3response重定向需要將客戶端引導(dǎo)至另一個(gè)頁(yè)面時(shí),可以使用reponse對(duì)象的sendRedirect(String

url)方法實(shí)現(xiàn)客戶端的重定向。例如客戶端輸入的表單信息不完整或有誤時(shí),應(yīng)該再次被重定向到輸入頁(yè)面。【例4-6】編寫(xiě)兩個(gè)JSP頁(yè)面login.jsp和validate.jsp,如果在頁(yè)面login.jsp中輸入正確的密碼“nihao2023”,單擊按鈕后提交給頁(yè)面validate.jsp,如果輸入不正確,重新定向到login.jsp頁(yè)面。先運(yùn)行l(wèi)ogin.jsp頁(yè)面,頁(yè)面效果如圖4.2(a)~4.2(b)所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.2.4實(shí)踐環(huán)節(jié)——登錄驗(yàn)證編寫(xiě)3個(gè)JSP頁(yè)面login_1.jsp、server.jsp和loginSuccess.jsp。在頁(yè)面login_1.jsp中輸入用戶名和密碼,單擊“提交”按鈕將輸入的信息提交給頁(yè)面server.jsp。在server.jsp頁(yè)面中進(jìn)行登錄驗(yàn)證:如果輸入正確(用戶名“zhangsan”,密碼“123”),提示“成功登錄,3秒鐘后進(jìn)入loginSuccess.jsp頁(yè)面”,如果輸入不正確,重新定向到login_1.jsp頁(yè)面。先運(yùn)行l(wèi)ogin_1.jsp頁(yè)面,頁(yè)面運(yùn)行效果如圖4.3(a)~4.3(c)所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.3out對(duì)象out對(duì)象的類(lèi)型為jakarta.servlet.jsp.JspWriter,是一個(gè)輸出流,用來(lái)向客戶端瀏覽器輸出數(shù)據(jù)?!纠?-7】編寫(xiě)1個(gè)頁(yè)面example4_7.jsp,在該頁(yè)面中使用out對(duì)象輸出信息。序

號(hào)方

法功

說(shuō)

明1voidclear()

清除緩沖區(qū)的內(nèi)容2voidclearBuffer()清除緩沖區(qū)的當(dāng)前內(nèi)容3voidflush()

清空流4intgetBufferSize()

返回緩沖區(qū)字節(jié)數(shù),如不設(shè)緩沖區(qū)則返回05intgetRemaining()

返回緩沖區(qū)剩余大小6booleanisAutoFlush()返回緩沖區(qū)滿時(shí),是自動(dòng)清空還是拋出異常7voidclose()關(guān)閉輸出流8voidprint()

輸出各種數(shù)據(jù)類(lèi)型9voidnewLine()

輸出一個(gè)換行符《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.4session對(duì)象瀏覽器與Web服務(wù)器之間使用Http協(xié)議進(jìn)行通信。Http是一種無(wú)狀態(tài)協(xié)議,客戶端向服務(wù)器發(fā)出請(qǐng)求(request),服務(wù)器返回響應(yīng)(response),連接就被關(guān)閉了,在服務(wù)器端不保留連接的相關(guān)信息。所以服務(wù)器必須采取某種手段來(lái)記錄每個(gè)客戶端的連接信息。Web服務(wù)器可以使用內(nèi)置對(duì)象session來(lái)存放有關(guān)連接的信息,session對(duì)象的類(lèi)型為jakarta.servlet.http.HttpSession。session對(duì)象指的是客戶端與服務(wù)器端的一次會(huì)話,從客戶端連到服務(wù)器端的一個(gè)Web應(yīng)用程序開(kāi)始,直到客戶端與服務(wù)器端斷開(kāi)為止。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.1session對(duì)象的IDWeb服務(wù)器會(huì)給每一個(gè)用戶自動(dòng)創(chuàng)建一個(gè)session對(duì)象,為每個(gè)session對(duì)象分配一個(gè)唯一標(biāo)識(shí)的String類(lèi)型的session

ID,這個(gè)ID用于區(qū)分其他用戶。這樣每個(gè)用戶都對(duì)應(yīng)著一個(gè)session對(duì)象,不同用戶的session對(duì)象互不相同。session對(duì)象調(diào)用getId()方法就可以獲取當(dāng)前session對(duì)象的ID。【例4-8】編寫(xiě)3個(gè)JSP頁(yè)面example4_8_1.jsp、example4_8_2.jsp和example4_8_3.jsp,其中,example4_8_2.jsp存放在目錄tom中,example4_8_3.jsp存放在目錄cat中。用戶首先訪問(wèn)example4_8_1.jsp頁(yè)面,從該頁(yè)面鏈接到example4_8_2.jsp頁(yè)面,然后再?gòu)膃xample4_8_2.jsp頁(yè)面鏈接到example4_8_3.jsp。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.2session對(duì)象存取數(shù)據(jù)使用session對(duì)象可以保存用戶在訪問(wèn)某個(gè)Web服務(wù)期間的有關(guān)數(shù)據(jù)。有關(guān)處理數(shù)據(jù)的方法如下:

public

void

setAttribute(Stringkey,Objectobj)將參數(shù)obj指定的對(duì)象保存到session對(duì)象中,key為所保存的對(duì)象指定一個(gè)關(guān)鍵字。若保存的兩個(gè)對(duì)象關(guān)鍵字相同,則先保存的對(duì)象被清除。

publicObjectgetAttibute(Stringkey)獲取session中關(guān)鍵字是key的對(duì)象。

publicvoidremoveAttribute(Stringkey)從session中刪除關(guān)鍵字key所對(duì)應(yīng)的對(duì)象。

publicEnumerationgetAttributeNames()產(chǎn)生一個(gè)枚舉對(duì)象,該枚舉對(duì)象可使用方法nextElemets()遍歷session中各個(gè)對(duì)象所對(duì)應(yīng)的關(guān)鍵字?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.2session對(duì)象存取數(shù)據(jù)【例4-9】使用session對(duì)象模擬在線考試系統(tǒng)。編寫(xiě)3個(gè)JSP頁(yè)面example4_9_1.jsp、example4_9_2.jsp和example4_9_3.jsp,在example4_9_1.jsp頁(yè)面中考試,在example4_9_2.jsp頁(yè)面中顯示答題結(jié)果,在example4_9_3.jsp頁(yè)面中計(jì)算并公布考試成績(jī)。首先運(yùn)行example4_9_1.jsp頁(yè)面,效果如圖4.5(a)~4.5(c)所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.3session對(duì)象的生存期限一個(gè)用戶在某個(gè)Web服務(wù)中session對(duì)象的生存期限依賴于以下幾個(gè)因素: 用戶是否關(guān)閉瀏覽器。

session對(duì)象是否調(diào)用invalidate()方法。

session對(duì)象是否達(dá)到設(shè)置的最長(zhǎng)“發(fā)呆”時(shí)間。序

號(hào)方

法功

說(shuō)

明1longgetCreationTime()

返回session創(chuàng)建時(shí)間2longgetLastAccessedTime()返回此session里客戶端最近一次請(qǐng)求時(shí)間3intgetMaxInactiveInterval()

返回兩次請(qǐng)求間隔時(shí)間(單位是秒)4voidinvalidate()

使session失效5booleanisNew()判斷客戶端是否已經(jīng)加入服務(wù)器創(chuàng)建的session6voidsetMaxInactiveInterval()設(shè)置兩次請(qǐng)求間隔時(shí)間(單位是秒)《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.3session對(duì)象的生存期限【例4-10】編寫(xiě)1個(gè)JSP頁(yè)面example4_10.jsp。如果用戶是第一次訪問(wèn)該頁(yè)面,會(huì)顯示歡迎信息,并輸出session對(duì)象允許的最長(zhǎng)發(fā)呆時(shí)間、創(chuàng)建時(shí)間,以及session對(duì)象的ID。在example4_10.jsp頁(yè)面中,session對(duì)象使用setMaxInactiveInterval(int

maxValue)方法設(shè)置最長(zhǎng)的“發(fā)呆”狀態(tài)時(shí)間為10秒。用戶如果兩次刷新間隔時(shí)間超過(guò)10秒,用戶先前的session被取消,用戶將獲得一個(gè)新的session對(duì)象?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.4.4實(shí)踐環(huán)節(jié)——購(gòu)物車(chē)用戶到便民超市采購(gòu)商品,購(gòu)物前需要先登錄會(huì)員卡號(hào),購(gòu)物時(shí)先將選購(gòu)的商品放入購(gòu)物車(chē),最后到柜臺(tái)清點(diǎn)商品。請(qǐng)借助于session對(duì)象模擬購(gòu)物車(chē),并存儲(chǔ)客戶的會(huì)員卡號(hào)和購(gòu)買(mǎi)的商品名稱。會(huì)員卡號(hào)輸入后可以修改,購(gòu)物車(chē)中的商品可以查看。編寫(xiě)程序模擬上述過(guò)程。loginID.jsp實(shí)現(xiàn)會(huì)員卡號(hào)輸入,shop.jsp實(shí)現(xiàn)商品導(dǎo)購(gòu),food.jsp實(shí)現(xiàn)商品購(gòu)物,count.jsp實(shí)現(xiàn)清點(diǎn)商品。本節(jié)實(shí)踐環(huán)節(jié)的4個(gè)JSP頁(yè)面都保存在目錄practice4中,先運(yùn)行l(wèi)oginID.jsp頁(yè)面?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.5.1什么是application不同用戶的session對(duì)象互不相同,但有時(shí)候用戶之間可能需要共享一個(gè)對(duì)象,Web服務(wù)器啟動(dòng)后,就產(chǎn)生了這樣一個(gè)唯一的內(nèi)置對(duì)象application。application對(duì)象實(shí)現(xiàn)了jakarta.servlet.ServletContext接口。任何用戶在訪問(wèn)同一個(gè)Web服務(wù)的各個(gè)頁(yè)面時(shí),共享一個(gè)application對(duì)象,直到服務(wù)器關(guān)閉,這個(gè)application對(duì)象才被取消。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.5.2application對(duì)象存取數(shù)據(jù)application同session對(duì)象一樣也可以進(jìn)行數(shù)據(jù)存取,處理數(shù)據(jù)的方法如下:

publicvoidsetAttribute(Stringkey,Objectobj)將參數(shù)obj指定的對(duì)象保存到application對(duì)象中,key為所保存的對(duì)象指定一個(gè)關(guān)鍵字。若保存的兩個(gè)對(duì)象關(guān)鍵字相同,則先保存的對(duì)象被清楚。

publicObjectgetAttribute(Stringkey)獲取application中關(guān)鍵字是key的對(duì)象。

publicvoidremoveAttribute(Stringkey)從application中刪除關(guān)鍵字key所對(duì)應(yīng)的對(duì)象。

publicEnumerationgetAttributeNames()產(chǎn)生一個(gè)枚舉對(duì)象,該枚舉對(duì)象可使用方法nextElemets()遍歷application中各個(gè)對(duì)象所對(duì)應(yīng)的關(guān)鍵字。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.5.2application對(duì)象存取數(shù)據(jù)【例4-11】用application對(duì)象模擬“成語(yǔ)接龍”,用戶通過(guò)example4_11_1.jsp向example4_11_2.jsp頁(yè)面提交四字成語(yǔ),example4_11_2.jsp頁(yè)面獲取成語(yǔ)內(nèi)容后,用同步方法將該成語(yǔ)內(nèi)容和以前的成語(yǔ)內(nèi)容進(jìn)行連接,然后將這些四字成語(yǔ)內(nèi)容添加到application對(duì)象中。頁(yè)面運(yùn)行效果如圖4.8(a)~4.8(b)所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.5.3實(shí)踐環(huán)節(jié)——網(wǎng)站訪客計(jì)數(shù)器使用application對(duì)象實(shí)現(xiàn)網(wǎng)站訪客計(jì)數(shù)器的功能?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.6pageContext對(duì)象pageContext對(duì)象即頁(yè)面上下文對(duì)象,表示當(dāng)前頁(yè)面運(yùn)行環(huán)境,用于獲取當(dāng)前JSP頁(yè)面的相關(guān)信息,它的作用范圍為當(dāng)前JSP頁(yè)面。pageContext對(duì)象的類(lèi)型為jakarta.servlet.jsp.PageContext。pageContext對(duì)象可以訪問(wèn)當(dāng)前JSP頁(yè)面的所有內(nèi)置對(duì)象,如表4.4所示。另外,pageContext對(duì)象提供了存取屬性方法,如表4.5所示?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.6pageContext對(duì)象序

號(hào)方

法功

說(shuō)

明1ServletRequestgetRequest()

獲取當(dāng)前JSP頁(yè)面的請(qǐng)求對(duì)象2ServletResponsegetResponse()獲取當(dāng)前JSP頁(yè)面的響應(yīng)對(duì)象3HttpSessiongetSession()

獲取和當(dāng)前JSP頁(yè)面有關(guān)的會(huì)話對(duì)象4ServletConfiggetServletConfig()

獲取當(dāng)前JSP頁(yè)面的ServletConfig對(duì)象5ServletContextgetServletContext()

獲取當(dāng)前JSP頁(yè)面的運(yùn)行環(huán)境的application對(duì)象6ObjectgetPage()獲取當(dāng)前JSP頁(yè)面的Servlet實(shí)體的page對(duì)象7ExceptiongetException()獲取當(dāng)前JSP頁(yè)面的異常對(duì)象exception,這時(shí)此頁(yè)面的page指令的isErrorPage屬性要設(shè)置為true8JspWritergetOut()

獲取當(dāng)前JSP頁(yè)面的輸出流out對(duì)象序

號(hào)方

法功

說(shuō)

明1ObjectgetAttributet(Stringkey,intscope)

獲取范圍為scope,關(guān)鍵字為key的屬性對(duì)象2voidsetAttribute(Stringkey,Objectvalue,intscope)以K/V對(duì)的方式存儲(chǔ)scope范圍域?qū)傩詫?duì)象3voidremoveAttribute(Stringkey,intscope)

從scope范圍移除關(guān)鍵字為key的屬性對(duì)象4EnumerationgetAttributeNamesInScope(intscope)

從scope范圍中獲取所有屬性對(duì)象對(duì)應(yīng)的關(guān)鍵字《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.6pageContext對(duì)象【例4-12】編寫(xiě)1個(gè)JSP頁(yè)面example4_12.jsp,在該頁(yè)面中使用pageContext對(duì)象添加和獲取請(qǐng)求域?qū)傩灾?。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.1request對(duì)象4.2response對(duì)象4.3out對(duì)象4.4session對(duì)象4.5application對(duì)象4.6pageContext對(duì)象4.7page對(duì)象4.8config對(duì)象4.9exception對(duì)象4.10JSP的4種作用域《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

目錄4.7page對(duì)象page對(duì)象是一個(gè)與Servlet有關(guān)的內(nèi)置對(duì)象,它表示JSP文件轉(zhuǎn)譯后的Servlet對(duì)象,代表JSP頁(yè)面本身即this。因此它可以調(diào)用Servlet類(lèi)所定義的方法。page對(duì)象的類(lèi)型為jakarta.servlet.jsp.HttpJspPage,在實(shí)際應(yīng)用中,很少在JSP頁(yè)面使用page對(duì)象?!纠?-13】編寫(xiě)1個(gè)JSP頁(yè)面example4_13.jsp,在該頁(yè)面中使用page指令的info屬性設(shè)置頁(yè)面的說(shuō)明信息,并分別使用this和page對(duì)象獲取頁(yè)面的說(shuō)明信息?!禞avaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.8config對(duì)象config對(duì)象即頁(yè)面配置對(duì)象,表示當(dāng)前JSP頁(yè)面轉(zhuǎn)譯后的Servlet的ServletConfig對(duì)象,存儲(chǔ)著一些初始數(shù)據(jù)。config對(duì)象實(shí)現(xiàn)了jakarta.servlet.ServletConfig接口。config對(duì)象和page對(duì)象一樣,也很少被用到?!纠?-14】編寫(xiě)1個(gè)JSP頁(yè)面example4_14.jsp,在該頁(yè)面中使用config對(duì)象獲得當(dāng)前JSP頁(yè)面轉(zhuǎn)譯Java后的Servlet對(duì)象名。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.9exception對(duì)象exception對(duì)象是一個(gè)與Error有關(guān)的內(nèi)置對(duì)象,表示JSP頁(yè)面產(chǎn)生的異常。如果一個(gè)JSP頁(yè)面需要使用此對(duì)象,必須將頁(yè)面中page指令的isErrorPage屬性設(shè)置為true,否則無(wú)法編譯?!纠?-15】編寫(xiě)兩個(gè)JSP頁(yè)面example4_15.jsp和example4_15_1.jsp。在頁(yè)面example4_15.jsp中使用語(yǔ)句“exception.printStackTrace(response.getWriter());”輸出JSP頁(yè)面產(chǎn)生的異常信息;在example4_15_1.jsp頁(yè)面中產(chǎn)生數(shù)組越界異常,并設(shè)置該頁(yè)面page指令的errorPage屬性值為example4_15.jsp。《JavaWeb開(kāi)發(fā)從入門(mén)到實(shí)戰(zhàn)(第2版·微課視頻版)》陳恒

主編,清華大學(xué)出版社,2024

4.10JSP的4種作用域?qū)ο蟮淖饔糜蚓褪菍?duì)象的生命周期和可訪問(wèn)性,在JSP中有4種作用域:頁(yè)面域、請(qǐng)求域、會(huì)話域和應(yīng)用域。1.頁(yè)面域頁(yè)面域(page

scope),它的生命周期是指頁(yè)面執(zhí)行期間。存儲(chǔ)在頁(yè)面域的對(duì)象只能在它所在頁(yè)面被訪問(wèn)。2.請(qǐng)求域請(qǐng)求域(request

scope),它的生命周期是指一次請(qǐng)求過(guò)程,包括請(qǐng)求被轉(zhuǎn)發(fā)(forward)或者被包含(include)的情況。存儲(chǔ)在請(qǐng)求域中的對(duì)象只有在此次請(qǐng)求過(guò)程中才可以被訪問(wèn)。4.會(huì)話域會(huì)話域(session

scope),它的生命周期

溫馨提示

  • 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)論