




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaWeb程序設(shè)計(jì)
——JSP內(nèi)置對(duì)象(2)2主要內(nèi)容JSP內(nèi)置對(duì)象Session對(duì)象Application對(duì)象Out對(duì)象3Session對(duì)象session對(duì)象(會(huì)話對(duì)象)是類javax.servlet.Httpsession的一個(gè)對(duì)象,該對(duì)象用于保存每個(gè)與服務(wù)器建立連接的客戶端信息。Session對(duì)象存在于服務(wù)器端,工作開(kāi)始于從客戶端連接服務(wù)器開(kāi)始,直到與服務(wù)器斷開(kāi)連接為止。
Session對(duì)象的工作示意圖如下所示:4Session對(duì)象示意圖
session1:數(shù)據(jù)……session2:數(shù)據(jù)……sessionN:數(shù)據(jù)…………服務(wù)器端在線用戶1在線用戶2在線用戶N……客戶端5
一個(gè)Web服務(wù)器可能會(huì)有多個(gè)用戶訪問(wèn),服務(wù)器如何辨認(rèn)哪一個(gè)session屬于某個(gè)用戶?
當(dāng)服務(wù)器為某一個(gè)用戶建立session對(duì)象后,會(huì)給該session對(duì)象分配一個(gè)Id(字符串),該Id會(huì)傳送到客戶端。
當(dāng)用戶再次向服務(wù)器提出請(qǐng)求時(shí),Id字符串會(huì)一并傳送到服務(wù)器,服務(wù)器端將采用Id與各session進(jìn)行比對(duì),以查找用戶擁有的session。6(1)session對(duì)象的有效期限session對(duì)象在其建立后的存在期間,當(dāng)以下4種情況發(fā)生,則session對(duì)象及其數(shù)據(jù)將會(huì)被取消和清空。用戶關(guān)閉當(dāng)前正在使用的瀏覽器(一次連接結(jié)束)服務(wù)器關(guān)閉用戶未向服務(wù)器提出請(qǐng)求,且超過(guò)預(yù)設(shè)的時(shí)間運(yùn)行程序結(jié)束session7
當(dāng)一個(gè)用戶首次訪問(wèn)服務(wù)器上的一個(gè)JSP頁(yè)面時(shí),JSP引擎會(huì)產(chǎn)生一個(gè)session對(duì)象給該用戶,同時(shí),分配一個(gè)字符串類型的Id號(hào),并將該Id號(hào)發(fā)送給客戶端,保存在Cookie中。這樣,session對(duì)象和客戶之間就建立了一一對(duì)應(yīng)的關(guān)系,直到客戶端關(guān)閉瀏覽器,session對(duì)象消失,客戶端與服務(wù)器端的會(huì)話關(guān)系才消失。(2)session對(duì)象中的Id81、建立session變量在JSP中不需要設(shè)置程序代碼來(lái)建立用戶的session對(duì)象,下面的語(yǔ)句是在session對(duì)象中建立變量:
session.setAttribute(“變量名稱”,變量?jī)?nèi)容)
其中,變量?jī)?nèi)容可以是字符串或其他類型。(3)訪問(wèn)session對(duì)象中的數(shù)據(jù)9
例如:
<%session.setAttribute(“ID”,“123456”);session.setAttribute(“Date”,newjava.util.Date());%>
在session中建立的變量數(shù)據(jù),用戶在當(dāng)前瀏覽器中打開(kāi)的各個(gè)網(wǎng)頁(yè)都能訪問(wèn)這些變量數(shù)據(jù)。102、讀取session中的變量在session中設(shè)置了變量數(shù)據(jù)后,在其他的網(wǎng)頁(yè)中就可以使用getAttribute()方法讀取其中的內(nèi)容:
session.getAttribute(“變量名稱”)
返回值為Object(對(duì)象)類型,可以根據(jù)需要轉(zhuǎn)換其他數(shù)據(jù)類型;
3、獲取所有session中的變量名稱
session.getAttributeNames();
返回類型為枚舉類型114、清除session中的變量
session.removeAttribute(“變量名稱”)
5、結(jié)束session
session.invalidate();
以上方法是JSP存取session數(shù)據(jù)的基本方法。
例:利用session對(duì)象,統(tǒng)計(jì)訪問(wèn)某站點(diǎn)頁(yè)面的用戶數(shù)。
12“sessionCount.jsp”<%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><%!intNum=0;%><%if(session.isNew()){Num+=1;session.setAttribute("Num",Num);}%>聲明全局變量:Num判斷是否是一個(gè)新用戶將Num變量值存入session中13<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>session對(duì)象計(jì)數(shù)</title></head><body><CENTER><FONTSIZE=5>session對(duì)象計(jì)數(shù)</FONT></CENTER><BR><CENTER><Fontcolor=blue>您是第</Font><Fontcolor=red><%=session.getAttribute("Num")%></Font><Fontcolor=blue>個(gè)訪問(wèn)本站的用戶</Font></CENTER></body></html>獲取變量值14運(yùn)行結(jié)果:(開(kāi)啟新的瀏覽器窗口,計(jì)數(shù)增加)15運(yùn)行結(jié)果:(未開(kāi)啟新的瀏覽器窗口,刷新頁(yè)面,計(jì)數(shù)不增加)16主要內(nèi)容JSP內(nèi)置對(duì)象Session對(duì)象Application對(duì)象Out對(duì)象17
從服務(wù)器角度看,application對(duì)象可以視為一個(gè)所有連接服務(wù)器的用戶共享的數(shù)據(jù)存取區(qū)。如下圖所示:Application對(duì)象在線用戶1在線用戶2在線用戶N……客戶端application數(shù)據(jù)……網(wǎng)站服務(wù)器端application18
對(duì)于每一個(gè)連接服務(wù)器的用戶而言,application對(duì)象用于存儲(chǔ)其共享的數(shù)據(jù),且存取的數(shù)據(jù)內(nèi)容均相同,可以將其視為傳統(tǒng)應(yīng)用程序中的全局共享數(shù)據(jù),具有以下特點(diǎn):服務(wù)器啟動(dòng)后,會(huì)自動(dòng)創(chuàng)建application對(duì)象,當(dāng)用戶訪問(wèn)服務(wù)器的頁(yè)面時(shí),這個(gè)application對(duì)象都是同一個(gè),不能被用戶清除;
application對(duì)象保存了一個(gè)應(yīng)用系統(tǒng)中公有的數(shù)據(jù),為所有用戶共享,直至服務(wù)器關(guān)閉。191、建立application變量除了系統(tǒng)預(yù)設(shè)的application變量外,可以通過(guò)setAttribute()方法建立application變量:
application.setAttribute(“變量名稱”,變量?jī)?nèi)容)
其中,變量?jī)?nèi)容可以是字符串或其他類型對(duì)象。
存取Application對(duì)象的數(shù)據(jù)20
例如:
<%application.setAttribute(“ID”,“123456”);application.setAttribute(“num”,newInteger(3));%>
application對(duì)象所創(chuàng)建的變量,可以被站點(diǎn)中的各個(gè)網(wǎng)頁(yè)訪問(wèn)。212、讀取application中的變量在添加了application的變量后,可以通過(guò)getAttribute()方法來(lái)獲取變量的數(shù)據(jù)內(nèi)容:
application.getAttribute(“變量名稱”)
其返回值為Object類型3、獲取所有application的變量名
application.getAttributeNames();4、刪除application的變量
application.removeAttribute(“變量名”);22(discuss.jsp)<body><%application.setAttribute("disboard",newwebsamp.CommentBoard());%><%request.setCharacterEncoding("UTF8");CommentBoardboard=(CommentBoard)application.getAttribute("disboard");if(request.getParameter("post")!=null){board.add(request.getRemoteAddr()+"說(shuō):"+request.getParameter("post"));}for(Strings:board.getComments()){out.print(s+"<br/>");}%><formid="submit"method="POST"action="discuss.jsp"><inputtype="text"name="post"value=""/><inputtype="submit"value="發(fā)言"/></form></body>23例:存取application對(duì)象數(shù)據(jù):(1)在applicationInfo.jsp頁(yè)面中輸入用戶信息;(2)applicationData.jsp中讀取applicationInfo.jsp頁(yè)面中的用戶信息,并設(shè)置application對(duì)象的變量,存儲(chǔ)用戶信息;(3)usingApplication.jsp頁(yè)面獲取application對(duì)象中的變量取值。24<body><formmethod=post
action=applicationData.jsp><table><tr><td>輸入用戶名:</td><td><inputtype=textname=name></td></tr><tr><td>輸入性別:</td><td><inputtype=textname=sex></td></tr><trcolspan=2><td><inputtype=submitvalue=提交></td></tr></table></form></body>“applicationInfo.jsp”文件:25運(yùn)行結(jié)果:26“applicationData.jsp”文件:<%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%request.setCharacterEncoding("gb2312");%>…...<body><%Stringname=request.getParameter("name");Stringsex=request.getParameter("sex");application.setAttribute("name",name);application.setAttribute("sex",sex);%><ahref="usingApplication.jsp">顯示已設(shè)置的application變量數(shù)據(jù)內(nèi)容</a></body>添加變量:name,sex27<body><%Objectid=application.getAttribute("name");Objectsex=application.getAttribute("sex");if(id!=null){out.println("姓名:"+id.toString());out.println("<br>");out.println("性別:"+sex.toString());}else{out.println("無(wú)application變量數(shù)據(jù)!!");}%></body>“usingApplication.jsp”文件:獲取變量值28運(yùn)行結(jié)果:29運(yùn)行結(jié)果:30運(yùn)行結(jié)果:(關(guān)閉所有瀏覽器,重新啟動(dòng)瀏覽器,直接運(yùn)行usingApplication.jsp頁(yè)面,URL地址:http://localhost:8080/TestWeb/usingApplication.jsp)
因此,可以說(shuō)明application對(duì)象存儲(chǔ)了是整個(gè)網(wǎng)站服務(wù)器應(yīng)用程序的共享數(shù)據(jù)。31主要內(nèi)容JSP內(nèi)置對(duì)象Session對(duì)象Application對(duì)象Out對(duì)象32out對(duì)象是javax.servlet.jsp.JspWriter類的對(duì)象,它最主要的功能是將特定的數(shù)據(jù)內(nèi)容動(dòng)態(tài)輸出至客戶端的瀏覽器顯示。
(一)數(shù)據(jù)輸出方法
newLine():輸出換行;
print():輸出數(shù)據(jù);
println():輸出數(shù)據(jù),并換行;
out對(duì)象是一個(gè)輸出流,在向客戶端輸出數(shù)據(jù)時(shí),會(huì)消耗不少的系統(tǒng)資源。Out對(duì)象33
(二)緩沖區(qū)操作緩沖區(qū)是JSP頁(yè)面將數(shù)據(jù)輸出至客戶端瀏覽器之前,用來(lái)暫時(shí)存儲(chǔ)數(shù)據(jù)的區(qū)域,該緩沖區(qū)提供了一種數(shù)據(jù)輸出的緩沖機(jī)制,可以提高數(shù)據(jù)輸出的效率??蛻舳藶g覽器服務(wù)器緩沖區(qū)數(shù)據(jù)輸出數(shù)據(jù)34out對(duì)象中有6個(gè)方法:
clear():清空存有數(shù)據(jù)的緩沖區(qū),緩沖區(qū)需要有數(shù)據(jù),否則拋出IOException異常;
clearBuffer():清空緩沖區(qū);
flush():清空緩沖區(qū),并輸出數(shù)據(jù);
getBufferSize():返回緩沖區(qū)大小;
getRemaining():返回剩余緩沖區(qū)大??;
isAutoFlush():用來(lái)設(shè)置autoFlush屬性(緩沖區(qū)滿是否自動(dòng)清空);out對(duì)象中緩沖區(qū)操作方法:35
例:實(shí)現(xiàn)out對(duì)象緩沖區(qū)的操作
<body><%out.println("JSP程序設(shè)計(jì)<br>");
out.clearBuffer();out.println("清華出版社<br>");
out.flush();out.println("John編著<br>");out.println("==========<br>");out.println("剩余緩沖區(qū)大?。?+out.getRemaining()+"bytes<br>");out.println("預(yù)設(shè)緩沖區(qū)大?。?+out.getBufferSize()+"bytes<br>");out.println("AutoFlush:"+out.isAutoFlush());%></body>清空緩沖區(qū)數(shù)據(jù)清空緩沖區(qū),并輸出數(shù)據(jù)36運(yùn)行結(jié)果:37<body>
<%
out.println("JSP程序設(shè)計(jì)<br>");
out.clearBuffer();
out.println("清華出版社<br>");
out.flush();
out.println("John編著<br>");
out.println("==========<br>");
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)家用無(wú)線路由器行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- Unit 5 第2課時(shí) Section A (3a-3d)2024-2025學(xué)年新教材七年級(jí)英語(yǔ)上冊(cè)同步教學(xué)設(shè)計(jì)(人教版2024)河北專版
- 2025年中國(guó)X射線機(jī)市場(chǎng)調(diào)查研究及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2025年鋼結(jié)構(gòu)裝配式建筑構(gòu)件加工合作合同
- 2025年度電子商務(wù)物流配送合同風(fēng)險(xiǎn)評(píng)估與優(yōu)化方案
- 9《古詩(shī)三首》第二課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- 2025年度環(huán)保型二次結(jié)構(gòu)模板施工及廢棄物處理合同
- 2025年度戶外探險(xiǎn)搭棚安全保障合同
- some和any (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教新目標(biāo)Go For It!英語(yǔ)八年級(jí)上冊(cè)
- 2025-2030年中國(guó)瓷地磚項(xiàng)目投資可行性研究分析報(bào)告
- Python爬蟲(chóng)技術(shù)基礎(chǔ)介紹
- 《傳媒法律法規(guī)》課件
- 數(shù)據(jù)中心供配電系統(tǒng)概述演示
- TSG11-2020鍋爐安全技術(shù)規(guī)程(現(xiàn)行)
- 義務(wù)教育(音樂(lè))課程標(biāo)準(zhǔn)(2022年版)解讀
- 第三章企業(yè)的生產(chǎn)和成本
- 統(tǒng)編版 高中語(yǔ)文 必修下冊(cè) 《祝福》《林教頭風(fēng)雪山神廟》
- 2024年職教高考《機(jī)械制圖》考試題庫(kù)
- 九型人格與親子教育課件
- 2025屆高校畢業(yè)生公開(kāi)招聘工作人員報(bào)名登記表
- DB34∕T 2290-2022 水利工程質(zhì)量檢測(cè)規(guī)程
評(píng)論
0/150
提交評(píng)論