JSP常用內(nèi)置對(duì)象_第1頁(yè)
JSP常用內(nèi)置對(duì)象_第2頁(yè)
JSP常用內(nèi)置對(duì)象_第3頁(yè)
JSP常用內(nèi)置對(duì)象_第4頁(yè)
JSP常用內(nèi)置對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論