版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章 JSP對象,JSP,有效范圍,9個隱含對象,本章內(nèi)容,1. 對象有效范圍2. 隱含對象3. COOKIE對象4. JSP對象應(yīng)用實例,頁內(nèi)有效,請求有效,會話有效,應(yīng)用有效,§4.1 對象有效范圍,對 象,JSP頁面在處理請求時,可以訪問java對象,這些對象有些是隱含的,有些則是使用行為元素或腳本代碼創(chuàng)建的。,§3.1.1 頁內(nèi)有效,對象創(chuàng)建后只能在當(dāng)前JSP頁面內(nèi)被訪問,所有頁內(nèi)有效對象的引
2、用存儲在頁面上下文對象中。,pageContext,,,可見,一個頁面內(nèi),通過pageContext設(shè)置對象可以傳遞數(shù)據(jù)。,Go>>,,,,Go>>,通過本例可見,屬性只能在同一個JSP頁面內(nèi)獲得,其他頁面不能獲取。,§4.1.2 請求有效,在處理同一個請求時,不同JSP頁面創(chuàng)建的對象在這些頁面內(nèi)都是可以訪問的,這些對象就是請求有效的對象。如果請求轉(zhuǎn)向到同一運(yùn)行時的其他資源,這些對象依然有效。請求有
3、效的對象在請求處理結(jié)束時就會失效。,requestScopeSet.jsp,,,,,Go>>,§4.1.3 會話有效,會話:指客戶端和服務(wù)之間持續(xù)連接的一段時間在這段時間內(nèi),當(dāng)需要多次和服務(wù)器交互信息時,可以將有關(guān)信息存入session對象中,這些信息就是會話有效的,在與服務(wù)器斷線后,這些屬性就會失效。,sessionScopeSet.jsp,,,,,Go>>,§4.1.4 應(yīng)用有效,應(yīng)
4、用的作用范圍是從Web應(yīng)用服務(wù)器一開始執(zhí)行服務(wù)一直到Web應(yīng)用服務(wù)器結(jié)束服務(wù)為止,范圍最大,影響最大,在實際使用時注意不要使用過多 ,以免造成服務(wù)器負(fù)載過大。對于同一個Web應(yīng)用中,不同JSP頁面中創(chuàng)建的對象,若這些對象在所有頁面內(nèi)都是可用的,應(yīng)用有效的對象,,,,,Go>>,§4.1.5 屬性操作,除了pageContext,PAGE_SCOPEREQUEST_SCOPESESSION_SCOPEAPP
5、LICATION_SCOPE,§4.2 隱含對象,§4.2.1 request 對象,Request對象是HttpServletRequest類的實現(xiàn)實例,在request對象中除了包含請求有效的數(shù)據(jù)外,還包含客戶端請求的相關(guān)信息。常用的方法有:請求有效的屬性操作獲取HTTP Header信息獲取HTTP請求參數(shù),如HTML表單提交的參數(shù)信息獲取服務(wù)器端相關(guān)信息,包括服務(wù)器名字、地址和端口等獲取客戶端相關(guān)信
6、息,包括客戶端名字、地址和端口等獲取協(xié)議版本、協(xié)議獲取數(shù)據(jù)及數(shù)據(jù)相關(guān)信息的操作會話相關(guān)方法,Public void removeAttribute(String name),Public String getHeader(String name),Public String getParameter(String name),Public String getServerName(),Public String getRemote
7、Host(),Public String getProtocol(),Public String getPathInfo(),Public String getRequestedSessionId(),§4.2.1 request 對象,使用request對象獲取并顯示客戶端發(fā)出HTTP請求時發(fā)送的HTTPHeader中包含的全部信息,,,,是否有更多元素可提取,返回枚舉中的下一個對象,Go>>,例:使用reque
8、st對象獲取并顯示客戶端發(fā)出HTTP請求時發(fā)送的請求頭中包含的全部信息。,request對象幾個獲取信息的方法,,,,requestGet.jsp>>,§4.2.2 responses 對象,HTTP Header信息處理設(shè)置數(shù)據(jù)內(nèi)容的類型和長度setContentType()。在設(shè)置數(shù)據(jù)類型時,也會設(shè)置字符編碼。例如,類型設(shè)置為"text/html; charset=ISO-8859-4“獲取輸
9、出流。字符數(shù)據(jù)getWriter() 二進(jìn)制數(shù)據(jù)應(yīng)使用getOutputStream()本地化相關(guān)操作,如字符編碼、貨幣符號等,將服務(wù)器端的數(shù)據(jù)發(fā)送回瀏覽器端,Public String getCharacterEncoding( ),§4.2.2 responses 對象,緩沖控制瀏覽器重定向:sendRedirect(URL) 先返回瀏覽器,然后由瀏覽器發(fā)送重定向的URL請求,參數(shù)中的URL可以是其他服務(wù)器的UR
10、L資源。 響應(yīng)狀態(tài)控制當(dāng)需要在會話中存儲數(shù)據(jù)而瀏覽器不支持Cookies時,使用encodeURL會將會話ID附加到URL后。向瀏覽器發(fā)送Cookie,Public void setBufferSize(int bufferSize),?,Public void setStatus(int statusCode),Public String endodeURL(String url),Public void addCookie(C
11、ookie cookie),將頁面返回內(nèi)容以Word文檔格式返回瀏覽器,,Response1.jsp>>,,§4.2.2 responses 對象,,緩沖區(qū),,Response.setIntHeader(“Refresh”,”10;URL=http//www.beijing2008.org”),,使用response對象的setHeader( )方法設(shè)置Html header參數(shù)nocache可以避免這種情況出現(xiàn)。
12、,除此之外,response對象的setHeader( ) 方法設(shè)置頁面的自動刷新時間間隔,實現(xiàn)每30秒重新加載本身頁面的語句格式為。,Response.setIntHeader(“Refresh”, “30”),下列語句設(shè)定在10秒后,瀏覽器加載新頁面http://www.beijing2008.org,使用no-cache和自動刷新機(jī)制顯示當(dāng)前時間,,,,設(shè)置應(yīng)答頭的名字和值,設(shè)置包含日期和整數(shù)值的應(yīng)答頭,Response2.jsp
13、,§4.2.3 out 對象,JSP文件模板數(shù)據(jù)在轉(zhuǎn)換成Servlet實現(xiàn)類時,會自動生成out.print()或out.println()語句來輸出數(shù)據(jù)。Out對象包含方法:print()、println()、newLine()、write()、flush() 、clear() 等,向瀏覽器端輸出數(shù)據(jù),確保緩沖區(qū)內(nèi)容發(fā)送到瀏覽器,Out對象實現(xiàn)不同語言文字的輸出,,,Unicode表示,out.jsp,§4.2
14、.4 session 對象,存儲某個用戶的會話狀態(tài),Login,session,Cookie,I D,在會話中存儲的信息,在瀏覽器發(fā)出后續(xù)請求時可以獲取這些會話有效的數(shù)據(jù)。,§4.2.4 session 對象,session對象的常用方法存儲和獲取會話有效的屬性對象getAttribute()、setAttribute()、removeAttribute()、 getAttributeNames()會話控制invalida
15、te ()、 getMaxInactiveInterval ()、 setMaxInactiveInterval () 會話狀態(tài)getId ()、 isNew ()、 getCreationTime ()、 getLastAccessedTime ()獲取會話相關(guān)的Servlet上下文getServletContext (),,,,,,,,,,session.jsp,§4.2.5 application 對象,可以在同一個
16、Web應(yīng)用的不同Servlet和JSP頁面中共享信息 如:數(shù)據(jù)庫連接池具體的JSP頁面或Servlet屬于哪個Web應(yīng)用是由JSP容器自動管理,application對象的常用方法 :,存儲和獲取應(yīng)用有效的屬性對象獲取服務(wù)器信息返回web 應(yīng)用名獲取服務(wù)器支持的Java Servlet API 版本返回指定文件的MIME類型。,public String getServerInfo( ),public Str
17、ing getServletContextName( ),public int getMajorVersion( ),public int getMimeType(String file ),public Object getAttribute(String name ),application對象的常用方法 :,獲取參數(shù)指定的Servlet上下文對象獲取初始參數(shù)獲取指定path的實際路徑獲取資源日志管理,public Serv
18、etContext getContext(String uripath ),public String getInitParameter(String name ),public String getRealPath(String path ),public URL getResource(String path ),public void log(String msg ),,,{Tomcat}\logs\localhost.xxxx-
19、xx-xx.log),,,§4.2.6 pageContext 對象,JSP頁面利用頁面上下文對象獲取頁面所有相關(guān)的信息。該對象在Servlet實現(xiàn)JSP頁面時被創(chuàng)建,在頁面結(jié)束時消失。通過對象pageContext可以得到當(dāng)前頁面中所有其他的JSP隱含對象,pageContext對象可以訪問所有范圍的屬性和屬性名。包含include( )和forward( )方法,初始化隱含對象的變量,pageContext對象方法,
20、獲取當(dāng)前頁面的其它JSP隱含對象getXxx():頁內(nèi)有效屬性的相關(guān)操作所有范圍的屬性操作頁面重定向 forward( ) 頁面包含其它頁面操作 include ( )例:pageContext.jsp,訪問不同范圍的屬性,request、response、out、session、application、config、page、exception,getAttribute() setAttribute() removeA
21、ttribute(),PAGE_SCOPE REQUEST_SCOPESESSION_SCOPEAPPLICATION_SCOPE,§4.2.7 config 對象,JSP容器會自動配置JSP頁面,獲取Web應(yīng)用配置描述文件web.xml的相關(guān)信息,1. Web應(yīng)用配置描述文件,使用Web應(yīng)用配置描述文件(web.xml)來定義和映射JSP頁面,{Tomcat}\webapps\helloBeijing\WEB-INF,J
22、SP,,,指定頁面文件,映射到指定的URL,1. Web應(yīng)用配置描述文件,例: web.xml,將application.jsp映射到/application,… application/application.jsp application /application…,application.jsp,2. config對象的常用方法,,,,web.xml,,,,§4.2.8 page 對象,pag
23、e對象是JSP頁面對應(yīng)的Servlet類的實現(xiàn)對象,占用內(nèi)存多,,,§4.2.9 exception對象,只在錯誤處理頁(頁面的page指令中isErrorPage屬性值為true的頁面)中使用,代表發(fā)生錯誤的JSP頁面中對應(yīng)的異常信息。輸出錯誤信息 getLocalizedMessage() getMessage() toString() 輸出詳細(xì)錯誤信息 printStackTrace(
24、),§3.2.9 exception對象,JSP頁面定義為錯誤處理頁,本頁發(fā)生異常也是自己處理,使用throw產(chǎn)生異常,利用exception對象處理異常示例 exception.jsp,,§4.3 Cookie對象,用于在瀏覽器端保存會話過程中的一些參數(shù),用戶名、會話ID,cookie,Cookie對象屬性,§4.3 Cookie對象,Cookie對象創(chuàng)建時需要指定名稱和值Cookie對象的域是發(fā)送C
25、ookie去向的服務(wù)器Cookie發(fā)送到瀏覽器端保存時,可指定有效時間Cookie以不加密的文件形式保存在瀏覽器端,Cookie對象方法,創(chuàng)建新Cookie:Cookie(String name,String value)獲取已有Cookie的信息:getName(), getValue()改變Cookie的值:setValue(String newValue) 域的獲取和設(shè)置: getDomain()
26、 setDomain(String newDomain) 獲取和設(shè)置路徑: getPath() setPath(String newPath),Cookie對象方法,獲取和設(shè)置Cookie有效期,單位為秒: getMaxAge() setMaxAge(int maxAge) 設(shè)置和獲取Cookie的安全設(shè)置,
27、值為true或false獲取和設(shè)置Cookie協(xié)議版本。Cookie的說明,>0:在有效期內(nèi),即使用戶關(guān)閉瀏覽器再重新啟動,Cookie依然有效,<0:只當(dāng)瀏覽器運(yùn)行時有效,當(dāng)關(guān)閉瀏覽器時,Cookie就會無效,=0:刪除過去有效的Cookie,setSecure( secureFlag) getSecure( ),setVersion(int version) getVersion( ),setComment(Stri
28、ng comment) getComment( ),§3.3 Cookie對象,cookiesSet.jsp,cookiesGet.jsp,,,,,,,,,,cookiesSet.jsp,§4.4.1 request對象實例:用戶注冊,,表單的處理頁面,request對象處理表單信息,使用request的getParameter(“輸入?yún)?shù)名”)字符串轉(zhuǎn)換,控件的name屬性值,String userNam
29、e=request.getParameter(“name”);,request.setCharacterEncoding(“GBK”),String userName=request.getParameter(“name”);byte[ ] tmpbyte=userName.getBytes(“ISO8859_1”);userName=new String(tmpbyte),,,,,form.html,,,,form.html,
30、167;4.4.2 session對象實例:用戶登錄,HTTP協(xié)議是非連接的協(xié)議用戶標(biāo)識數(shù)據(jù)作為Cookie對象傳送給瀏覽器客戶端會話有效的對象來保持用戶身份識別信息,在一段時間內(nèi), 一個瀏覽器客戶與服務(wù)器之間一連串的交互,用戶名密 碼,§4.4.2 session對象實例:用戶登錄,,,,,,§4.4.3 application對象實例:簡單聊天室,示例所有連接該頁面的瀏覽器, 可看到聊天室所有內(nèi)容
31、30秒自動刷新聊天內(nèi)容每行包含一個用戶發(fā)言未登錄用戶以Guest標(biāo)識, 可以發(fā)言,整個Web應(yīng)用有效,,,chat.jsp,§4.4.3 application對象實例:簡單聊天室,在實際使用過程中,由于application對象會加大服務(wù)器的開銷,因此一般不將不斷增加的聊天內(nèi)容放在application中,而是放在數(shù)據(jù)庫或文件中,本章小節(jié),JSP對象的四種有效范圍JSP中9種隱含對象Cookie對象的應(yīng)用Web應(yī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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論