版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JavaWeb程序設(shè)計(jì)
——JSP內(nèi)置對象(2)2主要內(nèi)容JSP內(nèi)置對象Session對象Application對象Out對象3Session對象session對象(會(huì)話對象)是類javax.servlet.Httpsession的一個(gè)對象,該對象用于保存每個(gè)與服務(wù)器建立連接的客戶端信息。Session對象存在于服務(wù)器端,工作開始于從客戶端連接服務(wù)器開始,直到與服務(wù)器斷開連接為止。
Session對象的工作示意圖如下所示:4Session對象示意圖
session1:數(shù)據(jù)……session2:數(shù)據(jù)……sessionN:數(shù)據(jù)…………服務(wù)器端在線用戶1在線用戶2在線用戶N……客戶端5
一個(gè)Web服務(wù)器可能會(huì)有多個(gè)用戶訪問,服務(wù)器如何辨認(rèn)哪一個(gè)session屬于某個(gè)用戶?
當(dāng)服務(wù)器為某一個(gè)用戶建立session對象后,會(huì)給該session對象分配一個(gè)Id(字符串),該Id會(huì)傳送到客戶端。
當(dāng)用戶再次向服務(wù)器提出請求時(shí),Id字符串會(huì)一并傳送到服務(wù)器,服務(wù)器端將采用Id與各session進(jìn)行比對,以查找用戶擁有的session。6(1)session對象的有效期限session對象在其建立后的存在期間,當(dāng)以下4種情況發(fā)生,則session對象及其數(shù)據(jù)將會(huì)被取消和清空。用戶關(guān)閉當(dāng)前正在使用的瀏覽器(一次連接結(jié)束)服務(wù)器關(guān)閉用戶未向服務(wù)器提出請求,且超過預(yù)設(shè)的時(shí)間運(yùn)行程序結(jié)束session7
當(dāng)一個(gè)用戶首次訪問服務(wù)器上的一個(gè)JSP頁面時(shí),JSP引擎會(huì)產(chǎn)生一個(gè)session對象給該用戶,同時(shí),分配一個(gè)字符串類型的Id號,并將該Id號發(fā)送給客戶端,保存在Cookie中。這樣,session對象和客戶之間就建立了一一對應(yīng)的關(guān)系,直到客戶端關(guān)閉瀏覽器,session對象消失,客戶端與服務(wù)器端的會(huì)話關(guān)系才消失。(2)session對象中的Id81、建立session變量在JSP中不需要設(shè)置程序代碼來建立用戶的session對象,下面的語句是在session對象中建立變量:
session.setAttribute(“變量名稱”,變量內(nèi)容)
其中,變量內(nèi)容可以是字符串或其他類型。(3)訪問session對象中的數(shù)據(jù)9
例如:
<%session.setAttribute(“ID”,“123456”);session.setAttribute(“Date”,newjava.util.Date());%>
在session中建立的變量數(shù)據(jù),用戶在當(dāng)前瀏覽器中打開的各個(gè)網(wǎng)頁都能訪問這些變量數(shù)據(jù)。102、讀取session中的變量在session中設(shè)置了變量數(shù)據(jù)后,在其他的網(wǎng)頁中就可以使用getAttribute()方法讀取其中的內(nèi)容:
session.getAttribute(“變量名稱”)
返回值為Object(對象)類型,可以根據(jù)需要轉(zhuǎn)換其他數(shù)據(jù)類型;
3、獲取所有session中的變量名稱
session.getAttributeNames();
返回類型為枚舉類型114、清除session中的變量
session.removeAttribute(“變量名稱”)
5、結(jié)束session
session.invalidate();
以上方法是JSP存取session數(shù)據(jù)的基本方法。
例:利用session對象,統(tǒng)計(jì)訪問某站點(diǎn)頁面的用戶數(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對象計(jì)數(shù)</title></head><body><CENTER><FONTSIZE=5>session對象計(jì)數(shù)</FONT></CENTER><BR><CENTER><Fontcolor=blue>您是第</Font><Fontcolor=red><%=session.getAttribute("Num")%></Font><Fontcolor=blue>個(gè)訪問本站的用戶</Font></CENTER></body></html>獲取變量值14運(yùn)行結(jié)果:(開啟新的瀏覽器窗口,計(jì)數(shù)增加)15運(yùn)行結(jié)果:(未開啟新的瀏覽器窗口,刷新頁面,計(jì)數(shù)不增加)16主要內(nèi)容JSP內(nèi)置對象Session對象Application對象Out對象17
從服務(wù)器角度看,application對象可以視為一個(gè)所有連接服務(wù)器的用戶共享的數(shù)據(jù)存取區(qū)。如下圖所示:Application對象在線用戶1在線用戶2在線用戶N……客戶端application數(shù)據(jù)……網(wǎng)站服務(wù)器端application18
對于每一個(gè)連接服務(wù)器的用戶而言,application對象用于存儲(chǔ)其共享的數(shù)據(jù),且存取的數(shù)據(jù)內(nèi)容均相同,可以將其視為傳統(tǒng)應(yīng)用程序中的全局共享數(shù)據(jù),具有以下特點(diǎn):服務(wù)器啟動(dòng)后,會(huì)自動(dòng)創(chuàng)建application對象,當(dāng)用戶訪問服務(wù)器的頁面時(shí),這個(gè)application對象都是同一個(gè),不能被用戶清除;
application對象保存了一個(gè)應(yīng)用系統(tǒng)中公有的數(shù)據(jù),為所有用戶共享,直至服務(wù)器關(guān)閉。191、建立application變量除了系統(tǒng)預(yù)設(shè)的application變量外,可以通過setAttribute()方法建立application變量:
application.setAttribute(“變量名稱”,變量內(nèi)容)
其中,變量內(nèi)容可以是字符串或其他類型對象。
存取Application對象的數(shù)據(jù)20
例如:
<%application.setAttribute(“ID”,“123456”);application.setAttribute(“num”,newInteger(3));%>
application對象所創(chuàng)建的變量,可以被站點(diǎn)中的各個(gè)網(wǎng)頁訪問。212、讀取application中的變量在添加了application的變量后,可以通過getAttribute()方法來獲取變量的數(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()+"說:"+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對象數(shù)據(jù):(1)在applicationInfo.jsp頁面中輸入用戶信息;(2)applicationData.jsp中讀取applicationInfo.jsp頁面中的用戶信息,并設(shè)置application對象的變量,存儲(chǔ)用戶信息;(3)usingApplication.jsp頁面獲取application對象中的變量取值。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("無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頁面,URL地址:http://localhost:8080/TestWeb/usingApplication.jsp)
因此,可以說明application對象存儲(chǔ)了是整個(gè)網(wǎng)站服務(wù)器應(yīng)用程序的共享數(shù)據(jù)。31主要內(nèi)容JSP內(nèi)置對象Session對象Application對象Out對象32out對象是javax.servlet.jsp.JspWriter類的對象,它最主要的功能是將特定的數(shù)據(jù)內(nèi)容動(dòng)態(tài)輸出至客戶端的瀏覽器顯示。
(一)數(shù)據(jù)輸出方法
newLine():輸出換行;
print():輸出數(shù)據(jù);
println():輸出數(shù)據(jù),并換行;
out對象是一個(gè)輸出流,在向客戶端輸出數(shù)據(jù)時(shí),會(huì)消耗不少的系統(tǒng)資源。Out對象33
(二)緩沖區(qū)操作緩沖區(qū)是JSP頁面將數(shù)據(jù)輸出至客戶端瀏覽器之前,用來暫時(shí)存儲(chǔ)數(shù)據(jù)的區(qū)域,該緩沖區(qū)提供了一種數(shù)據(jù)輸出的緩沖機(jī)制,可以提高數(shù)據(jù)輸出的效率??蛻舳藶g覽器服務(wù)器緩沖區(qū)數(shù)據(jù)輸出數(shù)據(jù)34out對象中有6個(gè)方法:
clear():清空存有數(shù)據(jù)的緩沖區(qū),緩沖區(qū)需要有數(shù)據(jù),否則拋出IOException異常;
clearBuffer():清空緩沖區(qū);
flush():清空緩沖區(qū),并輸出數(shù)據(jù);
getBufferSize():返回緩沖區(qū)大??;
getRemaining():返回剩余緩沖區(qū)大??;
isAutoFlush():用來設(shè)置autoFlush屬性(緩沖區(qū)滿是否自動(dòng)清空);out對象中緩沖區(qū)操作方法:35
例:實(shí)現(xiàn)out對象緩沖區(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《柴油機(jī)燃料供給》課件
- 三年級數(shù)學(xué)下冊總復(fù)習(xí)課件
- 乙酸的說課課件
- 《畜禽免疫學(xué)》課件
- 中醫(yī)診斷學(xué)課件-中醫(yī)診斷學(xué)緒論
- 2024年高考?xì)v史總復(fù)習(xí)考前沖刺攻略 第4講 高考應(yīng)試能力的培養(yǎng)
- 單位管理制度集粹匯編【職工管理】十篇
- 單位管理制度匯編大合集【職工管理】
- 單位管理制度合并匯編職員管理十篇
- 單位管理制度范文大合集人事管理篇十篇
- 中華人民共和國殘疾評定表
- 人教版美術(shù)五年級上冊《第2課 色彩的和諧》說課稿2
- 2024年6月浙江省高考?xì)v史試卷(真題+答案)
- 住友(SWS)汽車連接器(Connectors)產(chǎn)品配套手冊
- 辦公樓室內(nèi)裝飾工程施工設(shè)計(jì)方案技術(shù)標(biāo)范本
- 2023年香港華夏杯六年級競賽初賽數(shù)學(xué)試卷
- 高中數(shù)學(xué)放縮法
- 上海市閔行區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(解析版)
- 2024年國考行測真題-言語理解與表達(dá)真題及完整答案1套
- 人教版三年級上冊數(shù)學(xué)期末測試卷可打印
- 醫(yī)療高級職稱評審論文答辯
評論
0/150
提交評論