版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六章JSP內(nèi)置對象理解JSP內(nèi)置對象的概念及特點(diǎn)掌握與Input/Output有關(guān)的內(nèi)置對象的常用方法及用法掌握與Context有關(guān)的內(nèi)置對象的常用方法及用法掌握與Servlet有關(guān)的內(nèi)置對象的常用方法及用法掌握與Error有關(guān)的內(nèi)置對象的常用方法及用法掌握J(rèn)SP的四種作用域本章重點(diǎn)本章任務(wù)完成“Q-ITOffer”銳聘網(wǎng)站的企業(yè)詳情展示、用戶登錄狀態(tài)判斷和退出、網(wǎng)站頁面程序異常處理功能。具體任務(wù)分解如下:任務(wù)驅(qū)動【任務(wù)6-1】使用request內(nèi)置對象實(shí)現(xiàn)企業(yè)詳情展示功能?!救蝿?wù)6-2】使用session內(nèi)置對象實(shí)現(xiàn)用戶登錄狀態(tài)判斷和退出功能?!救蝿?wù)6-3】使用exception內(nèi)置對象實(shí)現(xiàn)網(wǎng)站頁面程序異常處理功能。學(xué)習(xí)路線本章目標(biāo)知識點(diǎn)聽看抄改寫內(nèi)置對象的含義★★★★★request內(nèi)置對象★★★★★response內(nèi)置對象★★★★★out內(nèi)置對象★★★★★session內(nèi)置對象★★★★★application內(nèi)置對象★★★★★pageContext內(nèi)置對象★★★★★page內(nèi)置對象★★★★★config內(nèi)置對象★★★★★exception內(nèi)置對象★★★★★JSP的四種作用域★★★★★JSP內(nèi)置對象是指在JSP頁面中,不用聲明就可以在腳本和表達(dá)式中直接使用的對象。JSP內(nèi)置對象也稱隱含對象,它提供了Web開發(fā)常用的功能,為了提高開發(fā)效率,JSP規(guī)范預(yù)定義了內(nèi)置對象。JSP內(nèi)置對象有如下特點(diǎn):內(nèi)置對象由Web容器自動載入,不需要實(shí)例化;內(nèi)置對象通過Web容器來實(shí)現(xiàn)和管理;在所有的JSP頁面中,直接調(diào)用內(nèi)置對象都是合法的。6.1內(nèi)置對象簡介JSP規(guī)范定義了9種內(nèi)置對象,其名稱、類型、功能如下表:6.1內(nèi)置對象簡介對象名稱類型功能說明requestjavax.servlet.http.HttpServletRequest請求對象,提供客戶端HTTP請求數(shù)據(jù)的訪問responsejavax.servlet.http.HttpServletResponse響應(yīng)對象,用來向客戶端輸出響應(yīng)outjavax.servlet.jsp.JspWriter輸出對象,提供對輸出流的訪問sessionjavax.servlet.http.HttpSession會話對象,用來保存服務(wù)器與每個客戶端會話過程中的信息applicationjavax.servlet.ServletContext應(yīng)用程序?qū)ο?,用來保存整個應(yīng)用環(huán)境的信息pageContextjavax.servlet.jsp.PageContext頁面上下文對象,用于存儲當(dāng)前JSP頁面的相關(guān)信息configjavax.servlet.ServletConfig頁面配置對象,JSP頁面的配置信息對象pagejavax.servlet.jsp.HttpJspPage當(dāng)前JSP頁面對象,即thisexceptionjava.lang.Throwable異常對象,用于處理JSP頁面中的錯誤與Input/Output(輸入/輸出)有關(guān)的隱含對象包括:request對象、response對象和out對象,這類對象主要用來作為客戶端和服務(wù)器間通信的橋梁。request對象表示客戶端對服務(wù)器端發(fā)送的請求;response對象表示服務(wù)器對客戶端的響應(yīng);out對象負(fù)責(zé)把處理結(jié)果輸出到客戶端。6.2與Input/Output有關(guān)的內(nèi)置對象request對象即請求對象,表示客戶端對服務(wù)器發(fā)送的請求,主要用于接受客戶端通過HTTP協(xié)議傳送給服務(wù)器端的數(shù)據(jù)。request對象的類型為javax.servlet.http.HttpServletRequest,與Servlet中的請求對象為同一對象。request對象的作用域?yàn)橐淮蝦equest請求。6.2.1requestrequest對象擁有HttpServletRequest接口的所有方法,其常用方法如下:voidsetCharacterEncoding(Stringcharset):設(shè)置請求體參數(shù)的解碼字符集;StringgetParameter(Stringname):根據(jù)參數(shù)名獲取單一參數(shù)值;String[]getParameterValues(Stringname):根據(jù)參數(shù)名獲取一組參數(shù)值;voidsetAttribute(Stringname,Objectvalue):以名/值的方式存儲請求域?qū)傩裕籓bjectgetAttribute(Stringname):根據(jù)屬性名獲取存儲的對象數(shù)據(jù)。6.2.1request通過一個用戶登錄功能,演示request對象獲取請求參數(shù)方法的使用。該實(shí)例有兩個JSP頁面:用戶登錄頁面login.jsp、信息獲取顯示頁面loginParameter.jsp。實(shí)現(xiàn)對【代碼6-1】login.jsp的登錄信息進(jìn)行驗(yàn)證,并將產(chǎn)生的驗(yàn)證結(jié)果回傳到login.jsp頁面中進(jìn)行顯示提醒的功能request內(nèi)置對象講師演示講解【代碼6-3】loginValidate.jsp、【代碼6-4】login.jsp講師演示講解【代碼6-1】login.jsp、【代碼6-2】loginParameter.jspresponse對象即響應(yīng)對象,表示服務(wù)器對客戶端的響應(yīng)。主要用來將JSP處理后的結(jié)果傳回到客戶端。response對象類型為javax.servlet.http.HttpServletResponse,與Servlet中的響應(yīng)對象為同一對象。response對象擁有HttpServletResponse接口的所有方法,其常用的方法如下:voidsetContentType(Stringname):設(shè)置響應(yīng)內(nèi)容的類型和字符編碼;voidsendRedirect(Stringurl):重定向到指定的URL資源。6.2.2response演示使用sendRedirect()方法,對【代碼6-3】loginValidate.jsp進(jìn)行改進(jìn),登錄信息驗(yàn)證成功時重定向到用戶主頁面main.jspresponse內(nèi)置對象講師演示講解【代碼6-5】loginValidate.jsp、【代碼6-6】main.jspout對象即輸出對象,用來控制管理輸出的緩沖區(qū)(buffer)和輸出流(outputstream)向客戶端頁面輸出數(shù)據(jù)。out對象類型為javax.servlet.jsp.JspWriter,與HttpServletResponse接口的getWriter()方法獲得的PrintWriter對象功能相同,并都由java.io.Writer類繼承而來。out對象的方法可以分為兩類:數(shù)據(jù)的輸出;緩沖區(qū)的處理。6.2.3outout對象數(shù)據(jù)輸出的方法及描述示例out內(nèi)置對象<% inti=0; java.util.Datedate=newjava.util.Date(); out.print(i); out.newLine(); out.println(date);%>方法描述print/println(基本數(shù)據(jù)類型)輸出一個基本數(shù)據(jù)類型的值print/println(Objectobj)輸出一個對象的引用地址print/println(Stringstr)輸出一個字符串的值newLine()輸出一個換行符out對象緩沖區(qū)的處理方法及描述out內(nèi)置對象方法描述voidclear()清除輸出緩沖區(qū)的內(nèi)容。若緩沖區(qū)為空,則產(chǎn)生IOException異常voidclearBuffer()清除輸出緩沖區(qū)的內(nèi)容。若緩沖區(qū)為空,不會產(chǎn)生IOException異常voidflush()直接將目前暫存于緩沖區(qū)的數(shù)據(jù)刷新輸出voidclose()關(guān)閉輸出流。流一旦被關(guān)閉,則不能再使用out對象做任何操作。intgetBufferSize()獲取目前緩沖區(qū)的大?。↘B)intgetRemaining()獲取目前使用后還剩下的緩沖區(qū)大?。↘B)booleanisAutoFlush()返回true表示緩沖區(qū)滿時會自動刷新輸出;false表示緩沖區(qū)滿時不會自動清除并產(chǎn)生異常處理向out對象的輸出流中寫入數(shù)據(jù)時,數(shù)據(jù)會先被存儲在緩沖區(qū)中,在JSP默認(rèn)配置下,緩沖區(qū)滿時會被自動刷新輸出。JSP頁面通過page指令的autoFlush屬性和buffer屬性配置緩沖區(qū)參數(shù):autoFlush屬性表示是否自動刷新,默認(rèn)值為true;buffer屬性表示緩沖區(qū)大小,默認(rèn)值為8kb。在此配置下,out對象在輸出緩沖區(qū)內(nèi)容每達(dá)到8kb后,會自動刷新輸出而不會產(chǎn)生異常處理。演示在取消自動刷新功能時,頁面輸出信息超過緩沖區(qū)指定大小的情況和使用out.flush()刷新方法后的情況。out內(nèi)置對象講師演示講解【代碼6-7】outExample.jsp與Context(上下文)有關(guān)的內(nèi)置對象包括session、application和pageContext。其中:session對象表示瀏覽器與服務(wù)器的會話上下文環(huán)境;application對象表示應(yīng)用程序上下文環(huán)境;pageContext對象表示當(dāng)前JSP頁面上下文環(huán)境。6.3
與Context有關(guān)的內(nèi)置對象session對象即會話對象,表示瀏覽器與服務(wù)器之間的一次會話。一次會話的含義是:從客戶端瀏覽器連接服務(wù)器開始,在關(guān)閉瀏覽器或主動退出后,會話結(jié)束。這個過程可以包含瀏覽器與服務(wù)器之間的多次請求與響應(yīng)。session對象的類型為javax.servlet.http.HttpSession,session對象具有HttpSession接口的所有方法,其常用方法如下:voidsetAttribute(Stringname,Objectvalue):以名/值對的方式存儲session域?qū)傩?;ObjectgetAttribute(Stringname):根據(jù)屬性名獲取屬性值;voidinvalidate():使session對象失效,釋放所有的屬性空間。6.3.1session演示使用setAttribute()方法對用戶登錄驗(yàn)證成功后的用戶名進(jìn)行保存;在重定向的用戶主界面中使用getAttribute()方法獲取用戶名;在用戶主界面中實(shí)現(xiàn)安全退出。session內(nèi)置對象講師演示講解【代碼6-8】loginValidate.jsp、【代碼6-9】main.jsp、【代碼6-11】logout.jsp考慮session本身的目的,通常只應(yīng)該把與用戶會話狀態(tài)相關(guān)的信息放入session范圍內(nèi);不要僅僅為了兩個頁面之間傳遞信息就將信息放入session范圍,這樣會加大服務(wù)器端的開銷;如果僅僅是為了兩個頁面交換信息,應(yīng)將該信息放入request范圍內(nèi),然后通過請求轉(zhuǎn)發(fā)即可。注意application對象即應(yīng)用程序上下文對象,表示當(dāng)前應(yīng)用程序運(yùn)行環(huán)境,用以獲取應(yīng)用程序上下文環(huán)境中的信息。application對象在容器啟動時實(shí)例化,在容器關(guān)閉時銷毀。作用域?yàn)檎麄€Web容器的生命周期。application對象實(shí)現(xiàn)了javax.servlet.ServletContext接口,具有ServletContext接口的所有功能。application對象常用方法如下:voidsetAttribute(Stringname,Objectvalue):以名/值對的方式存儲application域?qū)傩?;ObjectgetAttribute(Stringname):根據(jù)屬性名獲取屬性值;voidremoveAttribute(Stringname):根據(jù)屬性名從application域中移除屬性。6.3.2application演示使用application對象實(shí)現(xiàn)一個頁面留言板。application內(nèi)置對象講師演示講解【代碼6-12】guestBook.jsppageContext即頁面上下文對象,表示當(dāng)前頁面運(yùn)行環(huán)境,用以獲取當(dāng)前JSP頁面的相關(guān)信息。pageContext對象作用范圍為當(dāng)前JSP頁面。pageContext對象類型為javax.servlet.jsp.PageContext,pageContext對象可以訪問當(dāng)前JSP頁面所有的內(nèi)置對象,訪問方法如下表:6.3.3pageContext方法描述ServletRequestgetRequest()獲取當(dāng)前JSP頁面的請求對象ServletResponsegetResponse()獲取當(dāng)前JSP頁面的響應(yīng)對象HttpSessiongetSession()獲取和當(dāng)前JSP頁面有聯(lián)系的會話對象ServletConfiggetServletConfig()獲取當(dāng)前JSP頁面的ServletConfig對象ServletContextgetServletContext()獲取當(dāng)前JSP頁面的運(yùn)行環(huán)境對象ObjectgetPage()獲取當(dāng)前JSP頁面的Servlet實(shí)體ExceptiongetException()獲取當(dāng)前JSP頁面的異常對象,不過此頁面的page指令的isErrorPage屬性要設(shè)為trueJspWritergetOut()獲取當(dāng)前JSP頁面的輸出流pageContext對象存取域?qū)傩缘姆椒懊枋龃嫒∮驅(qū)傩缘姆椒╯etAttribute()中scope參數(shù)被定義為四個常量,分別代表四種作用域范圍:PAGE_SCOPE=1代表page范圍;REQUEST_SCOPE=2代表request范圍;SESSION_SCOPE=3代表session范圍;APPLICATION_SCOPE=4代表application范圍。pageContext對象方法描述ObjectgetAttribute(Stringname,intscope)獲取范圍為scope,名為name的屬性對象voidsetAttribute(Stringname,Objectvalue,intscope)以名/值對的方式存儲scope范圍域?qū)傩詖oidremoveAttribute(Stringname,intscope)從scope范圍移除名為name的屬性EnumerationgetAttributeNamesInScope(intscope)從scope范圍中獲取所有屬性的名稱【示例】pageContext對象存取域?qū)傩詐ageContext對象<% pageContext.getSession().setAttribute("sessionKey","QST"); Objectobject=pageContext .getAttribute("sessionKey",pageContext.SESSION_SCOPE);%><%=object%>與Servlet有關(guān)的內(nèi)置對象,它們包括page對象和config對象。page對象表示JSP翻譯后的Servlet對象;config對象表示JSP翻譯后的Servlet的ServletConfig對象。6.4與Servlet有關(guān)的內(nèi)置對象page對象即this,代表JSP本身,更準(zhǔn)確地說它代表JSP被翻譯后的Servlet,因此它可以調(diào)用Servlet類所定義的方法。page對象的類型為javax.servlet.jsp.HttpJspPage,在實(shí)際應(yīng)用中,page對象很少在JSP中使用。演示page對象獲取頁面page指令的info屬性指定的頁面說明信息:6.4.1page講師演示講解【代碼6-13】pageExample.jspconfig對象即頁面配置對象,表示當(dāng)前JSP頁面翻譯后的Servlet的ServletConfig對象,存放著一些初始的數(shù)據(jù)結(jié)構(gòu)。config對象實(shí)現(xiàn)于java.servlet.ServletConfig接口。config對象和page對象一樣都很少被用到。演示JSP通過config對象獲取初始化參數(shù):6.4.2config講師演示講解【代碼6-14】configExample.jsp、【代碼6-15】web.xml與Error有關(guān)的內(nèi)置對象只有一個成員:exception對象。當(dāng)JSP網(wǎng)頁有錯誤時會產(chǎn)生異常,exception對象就用來對這個異常做處理。6.5
與Error有關(guān)的內(nèi)置對象exception對象即異常對象,表示JSP頁面產(chǎn)生的異常。如果一個JSP頁面要應(yīng)用此對象,必須將此頁面中page指令的isErrorPage屬性值設(shè)為true,否則無法編譯。exception對象是java.lang.Throwable的對象。演示exception對象對頁面異常的處理。6.5.1exception講師演示講解【代碼6-16】error.jsp、【代碼6-17】calculate.jsp對象的生命周期和可訪問性稱為作用域(scope),在JSP中有四種作用域:頁面域、請求域、會話域和應(yīng)用域。四種作用域的生命周期和可訪問性介紹如下:頁面域(pagescope),頁面域的生命周期是指頁面執(zhí)行期間。存儲在頁面域的對象只對于它所在頁面是可訪問的。請求域(requestscope),請求域的生命周期是指一次請求過程,包括請求被轉(zhuǎn)發(fā)(forward)或者被包含(include)的情況。存儲在請求域中的對象只有在此次請求過程中才可以被訪問。會話域(sessionscope),會話域的生命周期是指某個客戶端與服務(wù)器所連接的時間;客戶端在第一次訪問服務(wù)器時創(chuàng)建會話,在關(guān)閉瀏覽器或主動退出后,會話結(jié)束。存儲在會話域中的對象在整個會話期間(可能包含多次請求)都可以被訪問。應(yīng)用域(applicationscope),應(yīng)用域的生命周期是指從服務(wù)器開始執(zhí)行服務(wù)到服務(wù)器關(guān)閉為止,是四個作用域中時間最長的。存儲在應(yīng)用域中的對象在整個應(yīng)用程序運(yùn)行期間可以被所有JSP和Servlet共享訪問,在使用時要特別注意存儲數(shù)據(jù)的大小和安全性,否則可能會造成服務(wù)器負(fù)載過重和線程安全性問題。6.6JSP的四種作用域JSP的四種作用域分別對應(yīng)pageContext、request、session和application四個內(nèi)置對象。四個內(nèi)置對象都通過setAttribute(Stringname,Objectvalue)方法來存儲屬性,通過getAttribute(Stringname)來獲取屬性,從而實(shí)現(xiàn)屬性對象在不同作用域的數(shù)據(jù)分享。JSP的四種作用域講師演示講解【代碼6-18】visitCount.jsp在Web應(yīng)用開發(fā)時需要仔細(xì)考慮這些對象的作用域,按照對象的需要賦予適合的作用域,不要過大也不要過小。如果為一個只在頁面內(nèi)使用的對象賦予了應(yīng)用域,這樣顯然毫無意義。同樣,如果訪問對象具有太多的限制,那么也會使應(yīng)用變得更加復(fù)雜。因此需要仔細(xì)權(quán)衡每個對象及其用途,從而準(zhǔn)確推斷其作用域。JSP的四種作用域本章任務(wù)完成“Q-ITOffer”銳聘網(wǎng)站的企業(yè)詳情展示、用戶登錄狀態(tài)判斷和退出、網(wǎng)站頁面程序異常處理功能。具體任務(wù)分解如下:【任務(wù)6-1】使用request內(nèi)置對象實(shí)現(xiàn)企業(yè)詳情展示功能?!救蝿?wù)6-2】使用session內(nèi)置對象實(shí)現(xiàn)用戶登錄狀態(tài)判斷和退出功能?!救蝿?wù)6-3】使用exception內(nèi)置對象實(shí)現(xiàn)網(wǎng)站頁面程序異常處理功能。6.7貫穿任務(wù)實(shí)現(xiàn)本任務(wù)使用request內(nèi)置對象完成“Q-ITOffer”銳聘網(wǎng)站貫穿項(xiàng)目中的【任務(wù)6-1】企業(yè)詳情展示功能。本任務(wù)各組件間關(guān)系圖6.7.1【任務(wù)6-1】企業(yè)詳情展示講師演示講解本任務(wù)使用session內(nèi)置對象完成“Q-ITOffer”貫穿項(xiàng)目中的【任務(wù)6-2】用戶登錄狀態(tài)判斷和退出功能。任務(wù)效果圖如下:6.7.2【任務(wù)6-2】用戶登錄狀態(tài)判斷和退出講師演示講解本任務(wù)使用exception對象實(shí)現(xiàn)“Q-ITOffer”貫穿項(xiàng)目中的【任務(wù)6-3】網(wǎng)站頁面異常處理功能。本任務(wù)中新創(chuàng)建error.jsp作為異常信息提示頁面;當(dāng)JSP頁面產(chǎn)生異常時,通過此頁面捕獲異常信息。6.7.3【任務(wù)6-3】網(wǎng)站頁面異常處理講師演示講解JSP內(nèi)置對象是指不用聲明就可以在JSP頁面的腳本和表達(dá)式中直接使用的對象。request對象即請求對象,表示客戶端向服務(wù)器端發(fā)送的請求。request對象的類型為javax.servlet.http
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新材料研發(fā)財產(chǎn)抵押合同3篇
- 2025年度碧桂園綠色建筑設(shè)計咨詢與施工總承包服務(wù)協(xié)議3篇
- 2025年度智能交通信號系統(tǒng)安裝合同示范文本3篇
- 2025年通脈顆粒項(xiàng)目可行性研究報告
- 2025年私立學(xué)校學(xué)生宿舍床上用品清洗與更換服務(wù)合同3篇
- 2025年度個人買賣房屋質(zhì)量保證合同4篇
- 2025年浙江物芯數(shù)科技術(shù)有限公司招聘筆試參考題庫含答案解析
- 二零二五版進(jìn)出口貿(mào)易物流倉儲合同2篇
- 2025年江蘇南通天生置業(yè)有限公司招聘筆試參考題庫含答案解析
- 2025年河南衛(wèi)輝投資集團(tuán)有限公司招聘筆試參考題庫含答案解析
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- 2024年廣東省深圳市中考英語試題含解析
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識課件
- 建筑工程施工圖設(shè)計文件審查辦法
- 干部職級晉升積分制管理辦法
- 培訓(xùn)機(jī)構(gòu)應(yīng)急預(yù)案6篇
- 北師大版數(shù)學(xué)五年級上冊口算專項(xiàng)練習(xí)
- 應(yīng)急物資智能調(diào)配系統(tǒng)解決方案
- 2025年公務(wù)員考試時政專項(xiàng)測驗(yàn)100題及答案
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
評論
0/150
提交評論