版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JSPWeb應(yīng)用技術(shù)第4講JSP常用內(nèi)置對象2了解內(nèi)置對象的主要作用了解九個內(nèi)置對象及其對應(yīng)的類型掌握幾大對象的主要使用outrequestresponsesessionApplication掌握對象的作用范圍本講目標(biāo)JSP中的九個內(nèi)置對象No.內(nèi)置對象類型描述1outjavax.servlet.jsp.JspWriter頁面輸出2requestjavax.servlet.http.HttpServletRequest得到用戶的請求信息3responsejavax.servlet.http.HttpServletResponse服務(wù)器向客戶端的回應(yīng)信息4sessionjavax.servlet.http.HttpSession用來保存每一個用戶的信息5applicationjavax.servlet.ServletContext表示所有用戶的共享信息6configjavax.servlet.ServletConfig服務(wù)器配置,可以取得初始化參數(shù)7pageContextjavax.servlet.jsp.PageContextJSP的頁面容器8pagejava.lang.Object表示從該頁面中表示出來的一個Servlet實(shí)例9exceptionjava.lang.Throwable表示JSP頁面所發(fā)生的異常,在錯誤頁中才起作用response對象response對象的主要作用是用于對客戶端的請求進(jìn)行回應(yīng),將WEB服務(wù)器處理后的結(jié)果發(fā)回給客戶端。response對象屬于javax.servlet.http.HttpServletResponse接口的實(shí)例,HttpServletResponse接口的定義如下:publicinterfaceHttpServletResponseextendsServletResponseresponse對象的常用方法No.方法類型描述1publicvoidsetHeader(Stringname,Stringvalue)普通設(shè)置回應(yīng)的頭信息2publicvoidsendRedirect(Stringlocation)throwsIOException普通頁面跳轉(zhuǎn)3publicvoidaddCookie(Cookiecookie)普通向客戶端增加Cookie設(shè)置刷新頭信息JAVA的WEB開發(fā)使用的是HTTP協(xié)議,主要的操作就是基于請求和回應(yīng),但是在請求和回應(yīng)的同時也會包含一些其他的信息(例如:客戶端的IP、Cookie、語言等),那么這些信息就稱為頭信息。服務(wù)器端也可以根據(jù)需要向客戶端設(shè)置頭信息,在所有的頭信息的設(shè)置中,定時刷新頁面的頭信息使用的是最多的,直接使用setHeader()方法,將頭信息名稱設(shè)置為refresh,同時指定刷新的時間。設(shè)置定時刷新的頭信息<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body>
<h3>現(xiàn)在的時間是:</h3>
<%=newDate()%><% response.setHeader("refresh","2");//設(shè)置兩秒一刷新%></body></html>3秒后跳轉(zhuǎn)到其他頁面<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><h3>3秒后跳轉(zhuǎn)到hello.htm頁面,如果沒有跳轉(zhuǎn)請按<ahref="hello.htm">這里</a>!</h3><% response.setHeader("refresh","3;URL=hello.htm"); //3秒后跳轉(zhuǎn)到hello.htm%></body></html>頁面跳轉(zhuǎn)在JSP中除了可以通過頭信息的方式完成跳轉(zhuǎn),也可以使用response對象的sendRedirect()方法直接完成頁面的跳轉(zhuǎn)。使用sendRedirect()跳轉(zhuǎn)到hello.htm頁<%@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"
>中華人民共和國教育部</option>
</select>
<input
type="submit"
name="submit"
value="確定">
</form>
兩種跳轉(zhuǎn)的區(qū)別是什么?<jsp:forward>屬于服務(wù)器端跳轉(zhuǎn),跳轉(zhuǎn)之后地址欄的信息并不會有任何的改變,而response.sendRedirect()屬于客戶端跳轉(zhuǎn),跳轉(zhuǎn)之后地址欄是會改變的,變?yōu)樘D(zhuǎn)之后的頁面地址。在使用request范圍屬性的時候,只有是服務(wù)器端跳轉(zhuǎn)才能夠?qū)equest屬性保存到跳轉(zhuǎn)頁,而如果是客戶端跳轉(zhuǎn),則無法進(jìn)行屬性的傳遞。如果使用的是服務(wù)器端跳轉(zhuǎn)的話,則執(zhí)行到跳轉(zhuǎn)語句之后會立刻進(jìn)行跳轉(zhuǎn),如果使用的是客戶端跳轉(zhuǎn),則是在整個頁面執(zhí)行完之后才執(zhí)行跳轉(zhuǎn)。小結(jié)1response表示的是服務(wù)器端對客戶端的回應(yīng)可以通過setHeader()方法設(shè)置一個響應(yīng)的頭信息response對象屬于的sendRedirect()方法屬于客戶端跳轉(zhuǎn),而<jsp:forward>屬于服務(wù)器端跳轉(zhuǎn)session對象實(shí)際上在開發(fā)中session對象最主要的用處就是完成用戶的登陸(login)、注銷(logout)等常見功能的,每一個session對象都表示不同的訪問用戶,session對象是javax.servlet.http.HttpSession接口的實(shí)例化對象,所以session只能應(yīng)用在HTTP協(xié)議中。HttpSession接口的主要方法No.方法類型描述1publicStringgetId()普通取得SESSIONID2publiclonggetCreationTime()普通取得SESSION的創(chuàng)建時間3publiclonggetLastAccessedTime()普通取得SESSION的最后一次操作時間4publicbooleanisNew()普通判斷是否是新的SESSION(新用戶)5publicvoidinvalidate()普通讓SESSION失效6publicEnumerationgetAttributeNames()普通得到全部屬性的名稱setAttribute(java.lang.String
name,java.lang.Object
value)getAttribute(java.lang.String
name)
JSP內(nèi)置對象sessionsession對象用來存儲有關(guān)用戶會話的所有信息session對象常用方法:voidsetAttribute(Stringkey,Objectvalue):以鍵/值的方式,將一個對象的值存放到session中ObjectgetAttribute(Stringkey):根據(jù)名稱去獲取session中存放對象的值session.setAttribute("name","admin");Stringname=(String)session.getAttribute("name");取得SessionId當(dāng)一個用戶連接到服務(wù)器之后,服務(wù)器會自動為此session自動分配一個不會重復(fù)的SessionId,服務(wù)器依靠這些不同的SessionId來區(qū)分每一個不同的用戶,在WEB中可以使用HttpSession接口中的getId()方法取得這些編號。取得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長度:<%=id.length()%></h3></body></html>
例5-9(P116)制作站點(diǎn)計數(shù)器
<%
intnumber=10000;
//從session對象獲取numberObjectobj=session.getAttribute("number");
if(obj==null){
//設(shè)定session對象的變量的值session.setAttribute("number",String.valueOf(number));}
else{
//取得session對象中的number變量number=Integer.parseInt(obj.toString());
//統(tǒng)計頁面訪問次數(shù)number+=1;
//設(shè)定session對象的number變量值session.setAttribute("number",String.valueOf(number));}
%>你是第<%=number%>個用戶訪問本網(wǎng)站。生活中的訪問控制(登錄驗(yàn)證)下載電子書時,系統(tǒng)會提示用戶登錄網(wǎng)站點(diǎn)擊下載,系統(tǒng)轉(zhuǎn)入登錄頁面每次下載之前,系統(tǒng)如何判斷用戶是否已經(jīng)登錄?如何實(shí)現(xiàn)訪問控制系統(tǒng)如何保存不同用戶的登錄信息?12訪問控制流程圖:用戶登錄進(jìn)入用戶注冊頁面系統(tǒng)保存該用戶的登錄信息進(jìn)入欲訪問的頁面是否是注冊用戶否是用戶直接訪問某個頁面進(jìn)入用戶登錄頁面顯示該頁面內(nèi)容系統(tǒng)是否保存了該用戶登錄信息否是登錄驗(yàn)證(訪問控制)就是基于session來完成的增加登錄驗(yàn)證No.表達(dá)式描述1loginCheck.jsp數(shù)據(jù)提交,以完成登陸的驗(yàn)證,如果登陸成功(用戶名和密碼固定:qq/123),則保存屬性;如果登陸失敗,則顯示登陸失敗的信息,頁面跳轉(zhuǎn)回login.jsp,等待用戶繼續(xù)登陸。2welcome.jsp此頁面要求在用戶登陸完成之后才可以顯示登陸成功的信息,如果沒有登陸,則要給出未登陸的提示,同時給出一個登陸的連接地址。3logout.jsp此功能完成登陸的注銷,注銷之后,頁面要跳轉(zhuǎn)回login.jsp,等待用戶繼續(xù)登陸。判斷是否是新的用戶<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><title>高端Java培訓(xùn)</title></head><body><%
if(session.isNew()){ //用戶是第一次訪問%>
<h3>歡迎新用戶光臨!</h3><% }else{ //用戶再次訪問本頁面%>
<h3>您已經(jīng)是老用戶了!</h3><% }%></body></html>取得用戶的操作時間在session對象中,可以通過getCreationTime()方法取得一個session的創(chuàng)建時間,也可以使用getLastAccessedTime()方法取得一個session的最后一次操作時間,那么通過這兩種操作,就可以計算出一個session的操作時間。取得一個session的操作時間<%@pagecontentType="text/html;charset=GBK"%><%
longstart=session.getCreationTime(); //取得創(chuàng)建時間
longend=session.getLastAccessedTime(); //取得最后一次操作時間
longtime=(end-start)/1000; //得出操作的秒%><h3>您已經(jīng)停留了<%=time%>秒!</h3>例5-10(P117)小結(jié)2session對象最主要的功能就是用于登陸驗(yàn)證操作當(dāng)用戶第一次連接到服務(wù)器上時會自動分配一個新的sessionidapplication對象application對象是javax.servlet.ServletContext接口的實(shí)例化對象,從單詞上翻譯表示的是整個Servlet的上下文,ServletContext代表了整個容器的操作4StringgetRealPath(Stringpath)普通得到虛擬目錄對應(yīng)的絕對路徑No.方法類型描述1publicvoidsetAttribute(Stringname,Objecto)普通設(shè)置屬性的名稱及內(nèi)容2publicObjectgetAttribute(Stringname)普通根據(jù)屬性名稱取得屬性3publicvoidremoveAttribute(Stringname)普通刪除指定的屬性例5-14(P124)制作站點(diǎn)計數(shù)器
<%
//獲取一個Object對象StringstrNum=(String)application.getAttribute("count");
intcount=0;
//如果一個Object對象存在說明有用戶訪問
if(strNum!=null)
//類型轉(zhuǎn)化后值加1count=Integer.parseInt(strNum)+1;
//人數(shù)值加1后重新對count賦值application.setAttribute("count",String.valueOf(count));
%>您是第<%=application.getAttribute("count")%>位訪問者!application對象application對象保存Web應(yīng)用程序中公有的數(shù)據(jù),可存放全局變量。服務(wù)器啟動后自動創(chuàng)建application對象,此對象將一直有效,直到服務(wù)器關(guān)閉。不同用戶可以對該對象的同一屬性進(jìn)行操作;在任何地方對此對象屬性的操作,都將影響到其他用戶對此對象的訪問。application對象和session對象的區(qū)別是:在使用session對象時,一個客戶端對應(yīng)一個session對象,而使用application對象時,為多個應(yīng)用程序保存信息,對于一個容器而言,在同一個服務(wù)器中的JSP文件中共享一個application對象。
例5-15(P125)<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>application對象應(yīng)用實(shí)例2</title></head><body><br>JSP引擎名及Servlet版本號:<%=application.getServerInfo()%><br><%application.setAttribute("name","Java程序設(shè)計與項(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對象是javax.servlet.jsp.PageContext類的實(shí)例,主要表示的是一個
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 促銷活動廣告語
- 企業(yè)開展“強(qiáng)素質(zhì)樹形象”活動情況小結(jié)
- 中秋節(jié)日的慰問信(17篇)
- 中學(xué)秋季開學(xué)典禮活動主持詞范文(8篇)
- 中秋佳節(jié)的活動主持詞范文(5篇)
- DB12-T 1071-2021 氟骨癥現(xiàn)癥病人隨訪管理規(guī)范
- 影響粉末靜電噴涂質(zhì)量的諸多因素
- 耐火材料 高溫耐壓強(qiáng)度試驗(yàn)方法 征求意見稿
- 戈雅課件教學(xué)課件
- 八年級上學(xué)期語文第二次月考考試卷
- 綜合實(shí)踐活動課《早餐與健康》優(yōu)質(zhì)課件
- 爆破安全工作總結(jié)
- 物業(yè)保安、保潔項(xiàng)目投標(biāo)書
- 眼視光學(xué):專業(yè)職業(yè)生涯規(guī)劃
- 預(yù)防母嬰傳播培訓(xùn)
- 房屋改造方案可行性分析報告
- 2024年電子維修培訓(xùn)資料
- 水利工程測量的內(nèi)容和任務(wù)
- 項(xiàng)目風(fēng)險識別與控制-年度總結(jié)
- 《決策心理學(xué)》課件
- 裝飾裝修工程施工流程方案
評論
0/150
提交評論