JavaWeb程序設(shè)計 課件 ch07 JSP 內(nèi)置對象1、ch08 JSP 內(nèi)置對象2_第1頁
JavaWeb程序設(shè)計 課件 ch07 JSP 內(nèi)置對象1、ch08 JSP 內(nèi)置對象2_第2頁
JavaWeb程序設(shè)計 課件 ch07 JSP 內(nèi)置對象1、ch08 JSP 內(nèi)置對象2_第3頁
JavaWeb程序設(shè)計 課件 ch07 JSP 內(nèi)置對象1、ch08 JSP 內(nèi)置對象2_第4頁
JavaWeb程序設(shè)計 課件 ch07 JSP 內(nèi)置對象1、ch08 JSP 內(nèi)置對象2_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章JSP內(nèi)置對象1本課教學(xué)內(nèi)容認識JSP內(nèi)置對象out對象request對象response對象Cookie操作認識JSP內(nèi)置對象內(nèi)置對象:指在JSP頁面中內(nèi)置的不需要定義就可以在網(wǎng)頁中直接使用的對象內(nèi)置對象預(yù)定義的原因:因為這些內(nèi)置對象有些能夠存儲參數(shù),有些能夠提供輸出,還有些能提供其他的功能,JSP程序員一般情況下使用這些內(nèi)置對象的頻率比較高認識JSP內(nèi)置對象內(nèi)置對象特點內(nèi)置對象是自動載入的,因此它不需要直接實例化內(nèi)置對象是通過Web容器來實現(xiàn)和管理的在所有的JSP頁面中,直接調(diào)用內(nèi)置對象都是合法的認識JSP內(nèi)置對象JSP規(guī)范中定義了九種內(nèi)置對象,本章主要介紹前五種out對象:負責(zé)管理對客戶端的輸出request對象:負責(zé)得到客戶端的請求信息response對象:負責(zé)向客戶端發(fā)出響應(yīng)session對象:負責(zé)保存同一客戶端一次會話過程中的一些信息application對象:表示整個應(yīng)用的環(huán)境的信息認識JSP內(nèi)置對象exception對象:表示頁面上發(fā)生的異常,可以通過它獲得頁面異常信息page對象:表示的是當(dāng)前JSP頁面本身,就像Java類定義中的this一樣pageContext對象:表示的是此JSP的上下文config對象:表示此JSP的ServletConfigout對象out對象,對應(yīng)的類型是javax.servlet.jsp.JspWriterout對象的作用用來向客戶端輸出各種數(shù)據(jù)類型的內(nèi)容對應(yīng)用服務(wù)器上的輸出緩沖區(qū)進行管理out對象out輸出的主要有2個方法:voidprint()voidprintln()out對象out對象一些常用的與管理緩沖區(qū)有關(guān)的函數(shù):voidclose():關(guān)閉輸出流,從而可以強制終止當(dāng)前頁面的剩余部分向瀏覽器輸出voidclearBuffer():清除緩沖區(qū)里的數(shù)據(jù),并且把數(shù)據(jù)寫到客戶端去voidclear():清除緩沖區(qū)里的數(shù)據(jù),但不把數(shù)據(jù)寫到客戶端去out對象out對象一些常用的與管理緩沖區(qū)有關(guān)的函數(shù):intgetRemaining():獲取緩沖區(qū)中沒有被占用的空間的大小voidflush():輸出緩沖區(qū)的數(shù)據(jù)。out.flush()函數(shù)也會清除緩沖區(qū)中的數(shù)據(jù),但是此函數(shù)先將之前緩沖區(qū)的數(shù)據(jù)輸出至客戶端,然后再清除緩沖區(qū)的數(shù)據(jù)intgetBufferSize():獲得緩沖區(qū)的大小request對象request對應(yīng)類型是javax.servlet.http.HttpServletRequestrequest包含的方法StringgetMethod():得到提交方式StringgetRequestURI():得到請求的URL地址StringgetProtocol():得到協(xié)議名稱request對象request包含的方法StringgetServletPath():獲得客戶端請求服務(wù)器文件的路徑StringgetQueryString():得到URL的查詢部分,對post請求來說,該方法得不到任何信息request對象request包含的方法StringgetServerName():得到服務(wù)器的名稱StringgetServerPort():得到服務(wù)器口號StringgetRemoteAddr():得到客戶端的IP地址

*具體代碼示例見課本request對象request對象獲取客戶端得參數(shù)常用的是通過2個方法:StringgetParameter(Stringname):獲得客戶端傳送給服務(wù)器的name參數(shù)的值。當(dāng)傳遞給此函數(shù)的參數(shù)名沒有實際參數(shù)與之對應(yīng)時,則返回nullString[]getParameterValues(Stringname):以字符串?dāng)?shù)組的形式返回指定參數(shù)所有值response對象response與reuqest是一對相對應(yīng)的內(nèi)置對象,response可以理解為客戶端的響應(yīng),request可以理解為客戶端的請求,二者所表示范圍是相對應(yīng)的2個部分,具有很好的對稱性。response對應(yīng)的類(接口)是:javax.servlet.http.HttpServletResponse??梢酝ㄟ^查找文檔中javax.servlet.http.HttpServletResponse來了解response的API利用response對象進行重定向重定向:就是跳轉(zhuǎn)到另一個頁面重定向方法為:

response.sendRedirect(目標(biāo)頁面路徑); <jsp:forwardpage=""></jsp:forward>

兩種重定向方法的不同從瀏覽器的地址顯示上來看forward方法屬于服務(wù)器端去請求資源,服務(wù)器直接訪問目標(biāo)地址,并對該目標(biāo)地址的響應(yīng)內(nèi)容進行讀取,再把讀取的內(nèi)容發(fā)給瀏覽器,因此客戶端瀏覽器的地址不變兩種重定向方法的不同從瀏覽器的地址顯示上來看redirect是告訴客戶端,使瀏覽器知道去請求哪一個地址,相當(dāng)于客戶端重新請求一遍。所以地址顯示欄會變兩種重定向方法的不同從數(shù)據(jù)共享來看forward轉(zhuǎn)發(fā)的頁,以及轉(zhuǎn)發(fā)到的目標(biāo)頁面能夠共享request里面的數(shù)據(jù)redirect轉(zhuǎn)發(fā)的頁以及轉(zhuǎn)發(fā)到的目標(biāo)頁面不能共享request里面的數(shù)據(jù)兩種重定向方法的不同從功能來看redirect能夠重定向到當(dāng)前應(yīng)用程序的其他源,而且還能夠重定向到同一個站點上的其他應(yīng)用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源兩種重定向方法的不同從功能來看forward方法只能在同一個Web應(yīng)用程序內(nèi)的資源之間轉(zhuǎn)發(fā)請求,可以理解為服務(wù)器內(nèi)部的一種操作兩種重定向方法的不同從效率來看forward效率較高,因為跳轉(zhuǎn)僅發(fā)生在服務(wù)器端redirect相對較低,因為類似于再進行了一次請求使用頻率不是很高的一種重定向sendError():向客戶端發(fā)送HTTP狀態(tài)碼的出錯信息使用頻率不是很高的一種重定向常見的錯誤代碼有:400:BadRequest,請求出現(xiàn)語法錯誤401:Unauthorized,客戶試圖未經(jīng)授權(quán)訪問受密碼保護的頁面403:Forbidden,資源不可用404:NotFound,無法找到指定位置的資源500:InternalServerError,服務(wù)器遇到了無法預(yù)料的情況,不能完成客戶的請求利用response設(shè)置HTTP頭HTTP頭一般用來設(shè)置網(wǎng)頁的基本屬性response的setHeader()方法來進行設(shè)置 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",0);以上都是表示在客戶端緩存中不保存頁面的拷貝Cookie操作Cookie是一個小的文本數(shù)據(jù),由服務(wù)器端生成,發(fā)送給客戶端瀏覽器,客戶端瀏覽器如果設(shè)置為啟用Cookie,則會將這個小文本數(shù)據(jù)保存到某個目錄下的文本文件內(nèi)。下次登錄同一網(wǎng)站,客戶端瀏覽器則會自動將Cookie讀入之后,傳給服務(wù)器端。一般情下,Cookie中的值是以key-value的形式進行表達的Cookie操作Cookie操作主要用到以下幾個方法:response.addCookie(Cookiec):通過該方法,將Cookie寫入客戶端Cookie.setMaxAge(intsecond):通過該方法,設(shè)置Cookie的存活時間。參數(shù)表示存活Cookie操作從客戶端獲取Cookie內(nèi)容,主要通過以下方法:Cookie[]request.getCookies():讀取客戶端傳過來的Cookie,以數(shù)組形式返回Cookie的盜取盜取的方法:利用跨站腳本技術(shù),將信息發(fā)給目標(biāo)服務(wù)器;為了隱藏URL,甚至可以結(jié)合Ajax(異步Javascript和XML技術(shù))在后臺竊取CookieCookie的盜取通過某些軟件,竊取硬盤下的Cookie。一般說來,當(dāng)用戶訪問完某站點后,Cookie文件會存在機器的某個文件夾下,因此可以通過某些盜取和分析軟件來盜取CookieCookieCookie在Web編程中應(yīng)用很廣的原因:Cookie的值能夠持久化,即使客戶端機器關(guān)閉,下次打開還是可以得到里面的值Cookie可以幫助服務(wù)器端保存多個狀態(tài)信息,但是不用服務(wù)器端專門分配存儲資源Cookie可以持久保持一些和客戶相關(guān)的信息解決Cookie安全的方法方法有以下幾種替代Cookie。將數(shù)據(jù)保存在服務(wù)器端,可選的是session方案及時刪除Cookie解決Cookie安全的方法要刪除一個已經(jīng)存在的Cookie,有以下幾種方法:給一個Cookie賦以空置設(shè)置Cookie的失效時間為當(dāng)前時間,讓該Cookie在當(dāng)前頁面的瀏覽完之后就被刪除了解決Cookie安全的方法通過瀏覽器刪除Cookie。如在IE中,可以選擇"工具"——"Internet選項"——"常規(guī)",在里面點擊"刪除Cookies",就可以刪除文件夾中的Cookie禁用Cookie。很多瀏覽器中都設(shè)置了禁用Cookie的方法,如IE中,可以在"工具"——"Internet選項"——"隱私"中,將隱私級別設(shè)置為禁用Cookie本章結(jié)束本章總結(jié)JSP中的內(nèi)置對象Cookie的使用方法上機習(xí)題第8章JSP內(nèi)置對象2本課教學(xué)內(nèi)容利用session開發(fā)購物車session其他APIapplication對象其他對象利用session開發(fā)購物車購物車需求例子 想象用戶去購物超市買東西時,都會推一個購物車,購物車中包含了用戶所需要購買的商品,用戶可以將商品添加到購物車,也可將商品從購物車中取出或刪除。用戶可以推著購物車從這個專柜走到那個專柜,用戶也不用擔(dān)心別人的購物車里面的東西算到自己賬上,這在生活中已經(jīng)成為常識利用session開發(fā)購物車購物車的特點同一個用戶使用的是同一個購物車不同的用戶使用的是不同的購物車。否則,別人買的東西就會算到自己的賬上在不同貨架(頁面)之間進行訪問時,購物車中的內(nèi)容可以保持以上3點中,最關(guān)鍵的是“跨頁面保持”。利用session開發(fā)購物車實際上,JSP中的內(nèi)置對象session,就是跨頁面保持的,當(dāng)訪問網(wǎng)站時,服務(wù)器端已經(jīng)分配了一個session對象給用戶使用,對于同一個用戶,不管在哪個頁面,他使用的都是同一個session。利用session開發(fā)購物車session,是JSP九大內(nèi)置對象之一,它對應(yīng)的類(接口)是:javax.servlet.http.HttpSession??梢酝ㄟ^查找文檔中javax.servlet.http.HttpSession來了解session的API。如何用session開發(fā)購物車一些session常用的API將內(nèi)容放入購物車voidsession.setAttribute(Stringname,Objectobj);在該函數(shù)里面,參數(shù)1:name就是來為每一個物品起一個屬性(attribute)的名字(標(biāo)記);參數(shù)2:obj,就是內(nèi)容本身如何用session開發(fā)購物車*針對放入的提醒:如果兩次調(diào)用setAttribute(Stringname,Objectobj);并且name相同,那么后面放進去的內(nèi)容將會覆蓋以前放進去的內(nèi)容setAttribute(Stringname,Objectobj);的第二個參數(shù)是Object類型,即可以放入session的不僅僅是一些簡單字符串,還可以是Object。集合、數(shù)據(jù)結(jié)構(gòu)對象都可以放入session。如何用session開發(fā)購物車一些session常用的API讀取購物車中的內(nèi)容Objectsession.getAttribute(Stringname);在該函數(shù)里面,name就是被取出的內(nèi)容所對應(yīng)的標(biāo)記;返回值,就是內(nèi)容本身。

*具體代碼示例見課本如何用session開發(fā)購物車實際項目中,可以使session中的內(nèi)容多種多樣。為了將session里面的內(nèi)容很好地分門別類,可以將這幾種物品先放在一個集合中,然后將集合放入session中,操作更加方便。

session其他API-session的其他操作移除session中的內(nèi)容session有一個函數(shù):voidsession.removeAttribute(Stringname);利用該函數(shù),可以將屬性名為name的內(nèi)容從session中移除。session其他API-session的其他操作移除session中的全部內(nèi)容voidsession.invalidate();應(yīng)該注意的是,如果session中的內(nèi)容被移除之后,如果再想得到,會返回null值。session其他API-session的其他操作預(yù)防session內(nèi)容丟失在session的使用過程中,要注意一些技巧,session中存放的內(nèi)容要注意其一致性,否則會造成數(shù)據(jù)丟失。sessionIdsessionId的原理圖sessionId問題:客戶在訪問多個頁面時,多個頁面用到session,服務(wù)器如何知道該客戶的多個頁面使用的是同一個session?sessionId答案對于每一個session,服務(wù)器端都有一個sessionId來標(biāo)識它Stringsession.getId();sessionId實際上,在第一次訪問時,服務(wù)器端就給session分配了一個sessionId,并且讓客戶端記住了這個sessionId,客戶端訪問下一個頁面時,又將sessionId傳送給服務(wù)器端,服務(wù)器端根據(jù)這個sessionId來找到前一個頁面用的session對象。利用session保存登錄信息例子假如用戶登錄學(xué)生管理系統(tǒng),登錄后用戶可能要做很多操作,訪問很多頁面,在訪問這些頁面的過程中,各個頁面如何知道用戶的賬號呢?答案很簡單,在登錄成功后,用戶的賬號可以保存在session中。后面的各個頁面都可以訪問session內(nèi)的內(nèi)容application對象application原理圖application對象問題:購物車能用application實現(xiàn)嗎? 很明顯,購物車是不能用application實現(xiàn)的。因為不同客戶在服務(wù)器端訪問的是同一個對象,如果使用application實現(xiàn)購物車,客戶1向購物車中放了一種物品,客戶2也可以看到,那樣是不允許的application對象原理對于一個Web容器而言,所有的用戶都共同使用一個application對象,服務(wù)器啟動后,就會自動創(chuàng)建application對象,這個對象會一直保存,直到服務(wù)器關(guān)閉為止對應(yīng)的類(接口)是:javax.servlet.ServletContext

application對象application對象的API主要有以下幾個:將內(nèi)容放入applicationvoidapplication.setAttribute(Stringname,Objectobj);

讀取application中的內(nèi)容Objectapplication.getAttribute(Stringname);將內(nèi)容從application中移除voidapplication.removeAttribute(Stringname);application對象下面用一個簡單的案例來實現(xiàn):顯示某個頁面被訪問的次數(shù)。很顯然,這個次數(shù)應(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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論