版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JSPWeb應(yīng)用技術(shù)第4講JSP常用內(nèi)置對(duì)象2了解內(nèi)置對(duì)象的主要作用了解九個(gè)內(nèi)置對(duì)象及其對(duì)應(yīng)的類型掌握幾大對(duì)象的主要使用outrequestresponsesessionApplication掌握對(duì)象的作用范圍本講目標(biāo)JSP中的九個(gè)內(nèi)置對(duì)象No.內(nèi)置對(duì)象類型描述1outjavax.servlet.jsp.JspWriter頁(yè)面輸出2requestjavax.servlet.http.HttpServletRequest得到用戶的請(qǐng)求信息3responsejavax.servlet.http.HttpServletResponse服務(wù)器向客戶端的回應(yīng)信息4sessionjavax.servlet.http.HttpSession用來(lái)保存每一個(gè)用戶的信息5applicationjavax.servlet.ServletContext表示所有用戶的共享信息6configjavax.servlet.ServletConfig服務(wù)器配置,可以取得初始化參數(shù)7pageContextjavax.servlet.jsp.PageContextJSP的頁(yè)面容器8pagejava.lang.Object表示從該頁(yè)面中表示出來(lái)的一個(gè)Servlet實(shí)例9exceptionjava.lang.Throwable表示JSP頁(yè)面所發(fā)生的異常,在錯(cuò)誤頁(yè)中才起作用response對(duì)象response對(duì)象的主要作用是用于對(duì)客戶端的請(qǐng)求進(jìn)行回應(yīng),將WEB服務(wù)器處理后的結(jié)果發(fā)回給客戶端。response對(duì)象屬于javax.servlet.http.HttpServletResponse接口的實(shí)例,HttpServletResponse接口的定義如下:publicinterfaceHttpServletResponseextendsServletResponseresponse對(duì)象的常用方法No.方法類型描述1publicvoidsetHeader(Stringname,Stringvalue)普通設(shè)置回應(yīng)的頭信息2publicvoidsendRedirect(Stringlocation)throwsIOException普通頁(yè)面跳轉(zhuǎn)3publicvoidaddCookie(Cookiecookie)普通向客戶端增加Cookie設(shè)置刷新頭信息JAVA的WEB開發(fā)使用的是HTTP協(xié)議,主要的操作就是基于請(qǐng)求和回應(yīng),但是在請(qǐng)求和回應(yīng)的同時(shí)也會(huì)包含一些其他的信息(例如:客戶端的IP、Cookie、語(yǔ)言等),那么這些信息就稱為頭信息。服務(wù)器端也可以根據(jù)需要向客戶端設(shè)置頭信息,在所有的頭信息的設(shè)置中,定時(shí)刷新頁(yè)面的頭信息使用的是最多的,直接使用setHeader()方法,將頭信息名稱設(shè)置為refresh,同時(shí)指定刷新的時(shí)間。設(shè)置定時(shí)刷新的頭信息<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body>
<h3>現(xiàn)在的時(shí)間是:</h3>
<%=newDate()%><% response.setHeader("refresh","2");//設(shè)置兩秒一刷新%></body></html>3秒后跳轉(zhuǎn)到其他頁(yè)面<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><h3>3秒后跳轉(zhuǎn)到hello.htm頁(yè)面,如果沒(méi)有跳轉(zhuǎn)請(qǐng)按<ahref="hello.htm">這里</a>!</h3><% response.setHeader("refresh","3;URL=hello.htm"); //3秒后跳轉(zhuǎn)到hello.htm%></body></html>頁(yè)面跳轉(zhuǎn)在JSP中除了可以通過(guò)頭信息的方式完成跳轉(zhuǎn),也可以使用response對(duì)象的sendRedirect()方法直接完成頁(yè)面的跳轉(zhuǎn)。使用sendRedirect()跳轉(zhuǎn)到hello.htm頁(yè)<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><% response.sendRedirect("hello.htm"); //直接跳轉(zhuǎn)到hello.htm%></body></html>例5-8(P113)<%response.setBufferSize(10240);
%>
<%=response.getBufferSize()%>
<br/>
<%response.setCharacterEncoding("UTF-8");
%>
<%=response.getCharacterEncoding()%>
<br>網(wǎng)站友情鏈接:<hr>
<form
action="responseHandle.jsp"
method="post">
<select
name="link">
<option
value="qhdxcbs"
selected>清華大學(xué)出版社</option>
<option
value="jyb"
>中華人民共和國(guó)教育部</option>
</select>
<input
type="submit"
name="submit"
value="確定">
</form>
兩種跳轉(zhuǎn)的區(qū)別是什么?<jsp:forward>屬于服務(wù)器端跳轉(zhuǎn),跳轉(zhuǎn)之后地址欄的信息并不會(huì)有任何的改變,而response.sendRedirect()屬于客戶端跳轉(zhuǎn),跳轉(zhuǎn)之后地址欄是會(huì)改變的,變?yōu)樘D(zhuǎn)之后的頁(yè)面地址。在使用request范圍屬性的時(shí)候,只有是服務(wù)器端跳轉(zhuǎn)才能夠?qū)equest屬性保存到跳轉(zhuǎn)頁(yè),而如果是客戶端跳轉(zhuǎn),則無(wú)法進(jìn)行屬性的傳遞。如果使用的是服務(wù)器端跳轉(zhuǎn)的話,則執(zhí)行到跳轉(zhuǎn)語(yǔ)句之后會(huì)立刻進(jìn)行跳轉(zhuǎn),如果使用的是客戶端跳轉(zhuǎn),則是在整個(gè)頁(yè)面執(zhí)行完之后才執(zhí)行跳轉(zhuǎn)。小結(jié)1response表示的是服務(wù)器端對(duì)客戶端的回應(yīng)可以通過(guò)setHeader()方法設(shè)置一個(gè)響應(yīng)的頭信息response對(duì)象屬于的sendRedirect()方法屬于客戶端跳轉(zhuǎn),而<jsp:forward>屬于服務(wù)器端跳轉(zhuǎn)session對(duì)象實(shí)際上在開發(fā)中session對(duì)象最主要的用處就是完成用戶的登陸(login)、注銷(logout)等常見功能的,每一個(gè)session對(duì)象都表示不同的訪問(wèn)用戶,session對(duì)象是javax.servlet.http.HttpSession接口的實(shí)例化對(duì)象,所以session只能應(yīng)用在HTTP協(xié)議中。HttpSession接口的主要方法No.方法類型描述1publicStringgetId()普通取得SESSIONID2publiclonggetCreationTime()普通取得SESSION的創(chuàng)建時(shí)間3publiclonggetLastAccessedTime()普通取得SESSION的最后一次操作時(shí)間4publicbooleanisNew()普通判斷是否是新的SESSION(新用戶)5publicvoidinvalidate()普通讓SESSION失效6publicEnumerationgetAttributeNames()普通得到全部屬性的名稱setAttribute(java.lang.String
name,java.lang.Object
value)getAttribute(java.lang.String
name)
JSP內(nèi)置對(duì)象sessionsession對(duì)象用來(lái)存儲(chǔ)有關(guān)用戶會(huì)話的所有信息session對(duì)象常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將一個(gè)對(duì)象的值存放到session中ObjectgetAttribute(Stringkey):根據(jù)名稱去獲取session中存放對(duì)象的值session.setAttribute("name","admin");Stringname=(String)session.getAttribute("name");取得SessionId當(dāng)一個(gè)用戶連接到服務(wù)器之后,服務(wù)器會(huì)自動(dòng)為此session自動(dòng)分配一個(gè)不會(huì)重復(fù)的SessionId,服務(wù)器依靠這些不同的SessionId來(lái)區(qū)分每一個(gè)不同的用戶,在WEB中可以使用HttpSession接口中的getId()方法取得這些編號(hào)。取得SessionId<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><% Stringid=session.getId(); //取得SessionId%><h3>SESSIONID:<%=id%></h3><h3>SESSIONID長(zhǎng)度:<%=id.length()%></h3></body></html>
例5-9(P116)制作站點(diǎn)計(jì)數(shù)器
<%
intnumber=10000;
//從session對(duì)象獲取numberObjectobj=session.getAttribute("number");
if(obj==null){
//設(shè)定session對(duì)象的變量的值session.setAttribute("number",String.valueOf(number));}
else{
//取得session對(duì)象中的number變量number=Integer.parseInt(obj.toString());
//統(tǒng)計(jì)頁(yè)面訪問(wèn)次數(shù)number+=1;
//設(shè)定session對(duì)象的number變量值session.setAttribute("number",String.valueOf(number));}
%>你是第<%=number%>個(gè)用戶訪問(wèn)本網(wǎng)站。生活中的訪問(wèn)控制(登錄驗(yàn)證)下載電子書時(shí),系統(tǒng)會(huì)提示用戶登錄網(wǎng)站點(diǎn)擊下載,系統(tǒng)轉(zhuǎn)入登錄頁(yè)面每次下載之前,系統(tǒng)如何判斷用戶是否已經(jīng)登錄?如何實(shí)現(xiàn)訪問(wèn)控制系統(tǒng)如何保存不同用戶的登錄信息?12訪問(wèn)控制流程圖:用戶登錄進(jìn)入用戶注冊(cè)頁(yè)面系統(tǒng)保存該用戶的登錄信息進(jìn)入欲訪問(wèn)的頁(yè)面是否是注冊(cè)用戶否是用戶直接訪問(wèn)某個(gè)頁(yè)面進(jìn)入用戶登錄頁(yè)面顯示該頁(yè)面內(nèi)容系統(tǒng)是否保存了該用戶登錄信息否是登錄驗(yàn)證(訪問(wèn)控制)就是基于session來(lái)完成的增加登錄驗(yàn)證No.表達(dá)式描述1loginCheck.jsp數(shù)據(jù)提交,以完成登陸的驗(yàn)證,如果登陸成功(用戶名和密碼固定:qq/123),則保存屬性;如果登陸失敗,則顯示登陸失敗的信息,頁(yè)面跳轉(zhuǎn)回login.jsp,等待用戶繼續(xù)登陸。2welcome.jsp此頁(yè)面要求在用戶登陸完成之后才可以顯示登陸成功的信息,如果沒(méi)有登陸,則要給出未登陸的提示,同時(shí)給出一個(gè)登陸的連接地址。3logout.jsp此功能完成登陸的注銷,注銷之后,頁(yè)面要跳轉(zhuǎn)回login.jsp,等待用戶繼續(xù)登陸。判斷是否是新的用戶<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><%
if(session.isNew()){ //用戶是第一次訪問(wèn)%>
<h3>歡迎新用戶光臨!</h3><% }else{ //用戶再次訪問(wèn)本頁(yè)面%>
<h3>您已經(jīng)是老用戶了!</h3><% }%></body></html>取得用戶的操作時(shí)間在session對(duì)象中,可以通過(guò)getCreationTime()方法取得一個(gè)session的創(chuàng)建時(shí)間,也可以使用getLastAccessedTime()方法取得一個(gè)session的最后一次操作時(shí)間,那么通過(guò)這兩種操作,就可以計(jì)算出一個(gè)session的操作時(shí)間。取得一個(gè)session的操作時(shí)間<%@pagecontentType="text/html;charset=GBK"%><%
longstart=session.getCreationTime(); //取得創(chuàng)建時(shí)間
longend=session.getLastAccessedTime(); //取得最后一次操作時(shí)間
longtime=(end-start)/1000; //得出操作的秒%><h3>您已經(jīng)停留了<%=time%>秒!</h3>例5-10(P117)小結(jié)2session對(duì)象最主要的功能就是用于登陸驗(yàn)證操作當(dāng)用戶第一次連接到服務(wù)器上時(shí)會(huì)自動(dòng)分配一個(gè)新的sessionidapplication對(duì)象application對(duì)象是javax.servlet.ServletContext接口的實(shí)例化對(duì)象,從單詞上翻譯表示的是整個(gè)Servlet的上下文,ServletContext代表了整個(gè)容器的操作4StringgetRealPath(Stringpath)普通得到虛擬目錄對(duì)應(yīng)的絕對(duì)路徑No.方法類型描述1publicvoidsetAttribute(Stringname,Objecto)普通設(shè)置屬性的名稱及內(nèi)容2publicObjectgetAttribute(Stringname)普通根據(jù)屬性名稱取得屬性3publicvoidremoveAttribute(Stringname)普通刪除指定的屬性例5-14(P124)制作站點(diǎn)計(jì)數(shù)器
<%
//獲取一個(gè)Object對(duì)象StringstrNum=(String)application.getAttribute("count");
intcount=0;
//如果一個(gè)Object對(duì)象存在說(shuō)明有用戶訪問(wèn)
if(strNum!=null)
//類型轉(zhuǎn)化后值加1count=Integer.parseInt(strNum)+1;
//人數(shù)值加1后重新對(duì)count賦值application.setAttribute("count",String.valueOf(count));
%>您是第<%=application.getAttribute("count")%>位訪問(wèn)者!application對(duì)象application對(duì)象保存Web應(yīng)用程序中公有的數(shù)據(jù),可存放全局變量。服務(wù)器啟動(dòng)后自動(dòng)創(chuàng)建application對(duì)象,此對(duì)象將一直有效,直到服務(wù)器關(guān)閉。不同用戶可以對(duì)該對(duì)象的同一屬性進(jìn)行操作;在任何地方對(duì)此對(duì)象屬性的操作,都將影響到其他用戶對(duì)此對(duì)象的訪問(wèn)。application對(duì)象和session對(duì)象的區(qū)別是:在使用session對(duì)象時(shí),一個(gè)客戶端對(duì)應(yīng)一個(gè)session對(duì)象,而使用application對(duì)象時(shí),為多個(gè)應(yīng)用程序保存信息,對(duì)于一個(gè)容器而言,在同一個(gè)服務(wù)器中的JSP文件中共享一個(gè)application對(duì)象。
例5-15(P125)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>application對(duì)象應(yīng)用實(shí)例2</title></head><body><br>JSP引擎名及Servlet版本號(hào):<%=application.getServerInfo()%><br><%application.setAttribute("name","Java程序設(shè)計(jì)與項(xiàng)目實(shí)訓(xùn)教程");out.print(application.getAttribute("name")+"<br>");application.removeAttribute("name");out.print(application.getAttribute("name")+"<br>");%></body></html>例5-15(P125)pageContext對(duì)象是javax.servlet.jsp.PageContext類的實(shí)例,主要表示的是一個(gè)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)型A4彩色激光打印機(jī)2024采購(gòu)協(xié)議明細(xì)版B版
- 初中英語(yǔ)賓語(yǔ)從句考點(diǎn)精講及練習(xí)(附答案)
- 2024年銷售策略研討會(huì)及市場(chǎng)拓展合同3篇
- 2025版智能機(jī)器人制造合伙人股權(quán)分配與產(chǎn)業(yè)鏈整合協(xié)議3篇
- 2024年環(huán)保型挖掘設(shè)備租賃合同規(guī)范3篇
- 2024藝術(shù)特長(zhǎng)生培養(yǎng)協(xié)議書:家長(zhǎng)與學(xué)生責(zé)任共擔(dān)3篇
- 應(yīng)急處突知識(shí)培訓(xùn)課件
- 飲食安全知識(shí)培訓(xùn)課件
- 2024年車輛貸款還款計(jì)劃表3篇
- 倉(cāng)庫(kù)知識(shí)培訓(xùn)課件
- 《鐵道概論課件》課件
- NB-T 47013.15-2021 承壓設(shè)備無(wú)損檢測(cè) 第15部分:相控陣超聲檢測(cè)
- 英文 補(bǔ)充協(xié)議 模板
- 安徽省生豬養(yǎng)殖業(yè)低碳發(fā)展模式及技術(shù)經(jīng)濟(jì)效果研究的中期報(bào)告
- 風(fēng)管機(jī)空調(diào)安裝施工方案
- 2023-2024學(xué)年江蘇省蘇州市數(shù)學(xué)六年級(jí)第一學(xué)期期末統(tǒng)考模擬試題含答案
- 人教版三年級(jí)上冊(cè)關(guān)于估算的數(shù)學(xué)題
- 食堂餐飲配送投標(biāo)方案
- 公共關(guān)系禮儀實(shí)務(wù)學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫(kù)2023年
- 紫草科旋花科馬鞭草科唇形科茄科課件
- 物品移交登記表格模板
評(píng)論
0/150
提交評(píng)論