




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第4章
內(nèi)置對(duì)象
JSP內(nèi)置對(duì)象,也稱(chēng)為隱含對(duì)象(ImplicitObject),由JSP容器自動(dòng)為JSP頁(yè)面提供。這些對(duì)象不需要預(yù)先聲明就可以直接在腳本程序中進(jìn)行使用。JSP容器提供了以下幾個(gè)內(nèi)置對(duì)象,它們是:request、response、out、session、application、config、pageContext、page、exception和cookie,本章將對(duì)它們進(jìn)行詳細(xì)介紹。2本章知識(shí)要點(diǎn):
掌握請(qǐng)求對(duì)象request掌握響應(yīng)對(duì)象response掌握輸出對(duì)象out和頁(yè)面上下文對(duì)象pageContext掌握會(huì)話對(duì)象session掌握全局應(yīng)用程序?qū)ο骯pplication34.1request請(qǐng)求對(duì)象 request對(duì)象是HttpServletRequest接口的一個(gè)實(shí)例,因此它可使用HttpServletRequest接口的方法,可以很方便地取得客戶(hù)端的各種信息。request對(duì)象的生命周期是由JSP容器自動(dòng)控制。當(dāng)客戶(hù)端通過(guò)HTTP協(xié)議請(qǐng)求一個(gè)JSP頁(yè)面時(shí),JSP容器就會(huì)創(chuàng)建request對(duì)象并將請(qǐng)求信息包裝到request對(duì)象中;當(dāng)JSP容器處理完請(qǐng)求后,request對(duì)象就會(huì)被銷(xiāo)毀。4.1.1request簡(jiǎn)介 Servlet容器將客戶(hù)端信息封裝在一個(gè)代表客戶(hù)端的request對(duì)象中,該對(duì)象是javax.servlet.ServletRequest的子類(lèi)型。封裝到HttpServletRequest對(duì)象中的客戶(hù)端信息包括請(qǐng)求頭(Header)、系統(tǒng)信息(比如編碼方式)、請(qǐng)求方式(比如GET或POST)、請(qǐng)求參數(shù)信息、cookie和其他信息。44.1.2request對(duì)象應(yīng)用 request對(duì)象中常用方法有g(shù)etParameter()、getRemoteUser和getRealPath()等方法。通過(guò)這些方法可以獲得客戶(hù)端的數(shù)據(jù)。在本節(jié)通過(guò)幾個(gè)實(shí)例說(shuō)明如何使用這些方法。5客戶(hù)端使用協(xié)議為:
<%
String
protocol=request.getProtocol();
out.println(protocol);
%>
獲得接收客戶(hù)端提交信息的頁(yè)面:
<%
String
path=request.getServletPath();
out.println(path);
%>
接收客戶(hù)端提交信息的長(zhǎng)度:
<%
int
length=request.getContentLength();
out.println(length);
%>
客戶(hù)提交信息的方式:
<%
String
method=request.getMethod();
out.println(method);
%>
HTTP文件頭中User-Agent的值:
<%
String
header1=request.getHeader("User-Agent");
out.println(header1);
%>
HTTP文件頭中accept的值:
<%
String
header2=request.getHeader("accept");
out.println(header2);
%>
HTTP文件頭中Host的值:
<%
String
header3=request.getHeader("Host");
out.println(header3);
%>
HTTP文件頭中accept-encoding的值:
<%
String
header4=request.getHeader("accept-encoding");
out.println(header4);
%>
服務(wù)器名稱(chēng):
<%
String
serverName=request.getServerName();
out.println(serverName);
%>
服務(wù)器端口號(hào):
<%
int
serverPort=request.getServerPort();
out.println(serverPort);
%>
客戶(hù)端的IP地址:
<%
String
IP=request.getRemoteAddr();
out.println(IP);
%>
客戶(hù)端主機(jī)的名稱(chēng):
<%
String
clientName=request.getRemoteHost();
out.println(clientName);
%>
4.2response響應(yīng)對(duì)象response對(duì)象是javax.servlet.ServletResponse接口中一個(gè)針對(duì)HTTP協(xié)議和實(shí)現(xiàn)的子類(lèi)。response對(duì)象是表示服務(wù)器對(duì)請(qǐng)求的響應(yīng)的HttpServletResponse對(duì)象,包含服務(wù)器向客戶(hù)機(jī)做出信息的應(yīng)答信息。response對(duì)象響應(yīng)信息包含的內(nèi)容包括:MIME類(lèi)型的定義、保存的Cookie、連接到Web資源的URL等。104.2.1response簡(jiǎn)介
當(dāng)服務(wù)器處理完客戶(hù)請(qǐng)求時(shí),往往需要發(fā)送一些信息給客戶(hù)端瀏覽器,或者需要重定向到其他頁(yè)面。和request對(duì)象一樣,response對(duì)象由容器生成,作為jspService()方法的參數(shù)被傳入JSP。因?yàn)檩敵隽魇蔷彌_的,所以可以設(shè)置Http狀態(tài)碼和response頭。內(nèi)部對(duì)象response也是一個(gè)HttpServletResponse對(duì)象,它提供了幾個(gè)用于設(shè)置送回瀏覽器的響應(yīng)方法(例如,Cookies信息)。114.2.2response對(duì)象應(yīng)用 response對(duì)象主要用來(lái)響應(yīng)用戶(hù)請(qǐng)求。12類(lèi)型說(shuō)明用法Content-TypeContent-Language設(shè)定頁(yè)面使用的字符集,用以說(shuō)明頁(yè)面制作所使用的語(yǔ)言,以指示瀏覽器調(diào)用相應(yīng)的字符集顯示頁(yè)面內(nèi)容<http-equiv="Content-Type"Content="text/html;Charset=gb2312"><http-equiv="Content-Language"Content="zh-CN">Refresh設(shè)置網(wǎng)頁(yè)的刷新時(shí)間,或轉(zhuǎn)移到另外的網(wǎng)頁(yè)。單位為秒<Metahttp-equiv="Refresh"Content="30"><Metahttp-equiv="Refresh"Content="5;Url=">Expires指定網(wǎng)頁(yè)在緩存中的有效時(shí)間,一旦網(wǎng)頁(yè)過(guò)期,必須到服務(wù)器上重新下載<Metahttp-equiv="Expires"Content="0"><Metahttp-equiv="Expires"Content="Wed,26Feb200708:21:57GMT">必須使用GMT的時(shí)間格式,或直接設(shè)為0(數(shù)字表示多少時(shí)間后過(guò)期)Pragma禁止瀏覽器從本地機(jī)的緩存中調(diào)閱頁(yè)面內(nèi)容<http-equiv="Pragma"Content="No-cach">Set-Cookie設(shè)定cookie,如果網(wǎng)頁(yè)過(guò)期,存儲(chǔ)的cookie也被刪除。需要注意的也是必須使用GMT時(shí)間<http-equiv="Set-Cookie"Content="cookievalue=xxx;expires=Wednesday,21-Oct-0715:14:21GMT;path=/">Pics-label設(shè)置網(wǎng)頁(yè)的評(píng)定等級(jí)。在IE的internet選項(xiàng)中有一項(xiàng)內(nèi)容設(shè)置,可以防止瀏覽一些受限制的網(wǎng)站,而網(wǎng)站的限制級(jí)別就是通過(guò)該參數(shù)來(lái)設(shè)置的<metahttp-equiv="Pics-label"contect="">windows-Target強(qiáng)制頁(yè)面在當(dāng)前窗口中以獨(dú)立頁(yè)面顯示,可以防止網(wǎng)頁(yè)被別人當(dāng)作一個(gè)frame頁(yè)調(diào)用<metahttp-equiv="windows-Target"contect="_top">4.3out輸出對(duì)象 out對(duì)象是向客戶(hù)端輸出流進(jìn)行寫(xiě)操作的對(duì)象。在JSP頁(yè)面中,可以使用out對(duì)象將所需的信息發(fā)送到客戶(hù)端瀏覽器。在JSP容器對(duì)JSP頁(yè)面進(jìn)行編譯時(shí),out對(duì)象會(huì)被轉(zhuǎn)換成java.io.PrintWriter對(duì)象。134.3.1out簡(jiǎn)介
out對(duì)象的基類(lèi)是JspWriter。out對(duì)象主要的方法是:print()方法和println()方法。兩者區(qū)別在于print()方法輸出完后,并不結(jié)束當(dāng)前行,而println()方法在輸出完畢后,會(huì)結(jié)束當(dāng)前行。上述兩種方法在化JSP頁(yè)面設(shè)計(jì)中是經(jīng)常用到的,它們可以輸出各種格式的數(shù)據(jù)類(lèi)型,如字符型、整型、浮點(diǎn)型、布爾型甚至可以是一個(gè)對(duì)象,還可以是字符串與變量的混合型以及表達(dá)式。14方法說(shuō)明newLine()輸出一個(gè)換行符號(hào)flush()輸出緩沖的數(shù)據(jù)close()關(guān)閉輸出流,從而可以強(qiáng)制終止當(dāng)前頁(yè)面的剩余部分向?yàn)g覽器輸出clearBuffer()清除緩沖區(qū)里的數(shù)據(jù),并把數(shù)據(jù)寫(xiě)到客戶(hù)端clear()清除緩沖區(qū)里的數(shù)據(jù),而不把數(shù)據(jù)寫(xiě)到客戶(hù)端getBufferSize()獲得緩沖區(qū)的大小,緩沖區(qū)的大小可用<%@pagebuffer=”Size”%>設(shè)置isAutoFlush()返回布爾值,若是autoflush則返回true,否則返回falsegetRemaining()獲得緩沖區(qū)沒(méi)有使用的空間的大小154.3.2out對(duì)象應(yīng)用
在JSP中,out對(duì)象主要用來(lái)向客戶(hù)端輸出數(shù)據(jù)。在使用out對(duì)象時(shí)會(huì)自動(dòng)轉(zhuǎn)換為java.io.PrintWriter對(duì)象,我們實(shí)際上使用的是PrintWriter對(duì)象,它是屬于javax.servlet.JspWriter類(lèi)實(shí)例。JspWriter對(duì)象提供了幾個(gè)將內(nèi)容寫(xiě)入響應(yīng)緩沖區(qū)的方法。由于JspWriter是從java.io.Writer派生而來(lái)的,java.io.Writer提供了一系列的寫(xiě)方法。因此,JspWriter本身也提供了一系列print方法。164.4pageContext對(duì)象 pageContext對(duì)象被封裝成javax.servlet.jsp.PageContext接口,它代表當(dāng)前運(yùn)行頁(yè)面的一些屬性。pageContext對(duì)象的創(chuàng)建和初始化都是由容器來(lái)完成,在JSP頁(yè)面中可以直接使用pageContext對(duì)象。4.4.1pageContext簡(jiǎn)介 pageContext對(duì)象在JSP容器執(zhí)行jspService()方法之前就已經(jīng)被初始化了,它的主要功能是讓JSP容器控制其他隱含對(duì)象。例如,對(duì)象的生成與初始化、釋放對(duì)象本身。pageContext對(duì)象提供了對(duì)JSP默認(rèn)的隱含對(duì)象,以及其他可用對(duì)象進(jìn)行操作的基本方法。這樣,通過(guò)pageContext對(duì)象就能夠?qū)崿F(xiàn)可用對(duì)象的屬性信息在Servlet與JSP頁(yè)面之間互相傳遞。174.4.2pageContext對(duì)象應(yīng)用
雖然pageContext對(duì)象可以訪問(wèn)HttpSession和ServletContext對(duì)象,但是通常情況下,JSP容器已經(jīng)為我們HttpSession和ServletContext的實(shí)例,即session和application內(nèi)置對(duì)象。184.5session會(huì)話對(duì)象 session對(duì)象是JSP中一個(gè)很重要的內(nèi)置對(duì)象,類(lèi)型為javax.servlet.http.HttpSession。當(dāng)用戶(hù)與服務(wù)器連接時(shí),服務(wù)器為每個(gè)用戶(hù)創(chuàng)建一個(gè)session對(duì)象,并設(shè)定其中內(nèi)容。默認(rèn)情況下,session對(duì)象在用戶(hù)第一次連接到服務(wù)器時(shí)由Web服務(wù)器自動(dòng)創(chuàng)建并設(shè)定session對(duì)象的屬性值,然后被關(guān)聯(lián)到request對(duì)象。Web開(kāi)發(fā)人員主要使用session對(duì)象來(lái)維護(hù)會(huì)話狀態(tài)。194.5.1session簡(jiǎn)介
session對(duì)象的類(lèi)型為HttpSession。session對(duì)象提供了一些常用方法,通過(guò)這些方法可以維護(hù)客戶(hù)端與服務(wù)器端的會(huì)話狀態(tài)。20方法說(shuō)明setAttribute(String,Object)將value對(duì)象以name名稱(chēng)綁定到會(huì)話,變成其name屬性。如果name屬性已經(jīng)存在,其對(duì)應(yīng)的對(duì)象被轉(zhuǎn)換為value對(duì)象。getAttribute(String)從會(huì)話session對(duì)象中取得name屬性,如果name屬性不存在,則返回null。getId()此方法返回會(huì)話的標(biāo)識(shí)。getAttributeNames()返回session對(duì)象中存儲(chǔ)的每一個(gè)對(duì)象,結(jié)果為Enumeration類(lèi)實(shí)例removeAttribute(String)從會(huì)話中刪除name屬性。如果name屬性不存在,則這不會(huì)執(zhí)行其他操作,也不會(huì)拋出異常。longgetCrertionTime()返回創(chuàng)建時(shí)間,單位為毫秒,從1970年1月1目算起getLastAccessedTime()返回在會(huì)話創(chuàng)建的時(shí)間內(nèi)Web容器接收到客戶(hù)最后一次發(fā)出請(qǐng)求的時(shí)間。setMaxInactiveInterval(int)設(shè)定允許客戶(hù)請(qǐng)求之間的最長(zhǎng)時(shí)間間隔。如果請(qǐng)求之間超過(guò)這個(gè)時(shí)間,JSP容器則會(huì)認(rèn)為請(qǐng)求屬于兩個(gè)不同的會(huì)話getMaxInactiveInterval()返回在會(huì)話期間內(nèi)客戶(hù)請(qǐng)求的最長(zhǎng)時(shí)間間隔,以秒為單位getld()返回會(huì)話標(biāo)識(shí)sessionIDisNew()檢查當(dāng)前客戶(hù)是否屬于新的會(huì)話invalidate()使會(huì)話失效,同時(shí)刪除其屬性對(duì)象getServletContext()返回當(dāng)前會(huì)話所在的上下文環(huán)境,ServletContext對(duì)象可以使Servlet與Web容器進(jìn)行通信。214.5.2session對(duì)象應(yīng)用
在實(shí)際使用中,我們經(jīng)常用session對(duì)象來(lái)判斷該用戶(hù)是否具有訪問(wèn)某個(gè)頁(yè)面的權(quán)限,防止無(wú)權(quán)限用戶(hù)訪問(wèn)用戶(hù)本不能訪問(wèn)的頁(yè)面。我們可以單獨(dú)的編寫(xiě)一個(gè)名為check.jsp文件,將它用include指令包含到每一個(gè)JSP頁(yè)面中,這樣當(dāng)用戶(hù)非法訪問(wèn)時(shí),check.jsp文件會(huì)從用戶(hù)的session對(duì)象中取出用戶(hù)的用戶(hù)名,該用戶(hù)名是在通過(guò)了身份驗(yàn)證后寫(xiě)入的。所以只要讀出的值為空,就可判斷當(dāng)前用戶(hù)無(wú)訪問(wèn)權(quán)限.這時(shí)會(huì)利用response對(duì)象重定向到登錄界面進(jìn)行身份驗(yàn)證,并提示錯(cuò)誤信息。224.6application對(duì)象 application對(duì)象保存了一個(gè)Web應(yīng)用系統(tǒng)中一些
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)業(yè)地產(chǎn)合伙投資協(xié)議書(shū)
- 對(duì)方凈身出戶(hù)離婚協(xié)議
- 初三上學(xué)期已做數(shù)學(xué)試卷
- 網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣策略及數(shù)字廣告優(yōu)化設(shè)計(jì)研究
- 氣體施工方案
- 2024-2025學(xué)年下學(xué)期高中英語(yǔ)必修三第五單元A卷
- 高壓線鐵塔驅(qū)鳥(niǎo)板施工方案
- 編劇服務(wù)協(xié)議.年
- 臨時(shí)用工免責(zé)協(xié)議書(shū)
- 5.2 分式的乘除法 -八年級(jí)數(shù)學(xué)下冊(cè)10分鐘課前預(yù)習(xí)練(北師大版)(原卷版)
- 中學(xué)生心理健康診斷測(cè)驗(yàn)-MHT量表
- 2022年CAD快捷鍵-CAD常用快捷鍵命令大全
- 流感病人的護(hù)理ppt課件
- 高邊坡施工危險(xiǎn)源辨識(shí)及分析
- 【李建西醫(yī)案鑒賞系列】三當(dāng)歸四逆湯治療頸腫案
- 安全文明施工管理(EHS)方案(24頁(yè))
- 結(jié)構(gòu)化思維PPT通用課件
- 劉姥姥進(jìn)大觀園課本劇劇本3篇
- 2022年拖拉機(jī)駕駛?cè)丝荚噮⒖碱}庫(kù)(含答案)
- 產(chǎn)品承認(rèn)書(shū)客(精)
- 長(zhǎng)方體和正方體的認(rèn)識(shí)(動(dòng)畫(huà))(課堂PPT)
評(píng)論
0/150
提交評(píng)論