內(nèi)置對象復(fù)習(xí)資料課件_第1頁
內(nèi)置對象復(fù)習(xí)資料課件_第2頁
內(nèi)置對象復(fù)習(xí)資料課件_第3頁
內(nèi)置對象復(fù)習(xí)資料課件_第4頁
內(nèi)置對象復(fù)習(xí)資料課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

復(fù)習(xí)資料:JSP頁面元素與內(nèi)置對象內(nèi)容提要介紹JSP頁面的結(jié)構(gòu)JSP的編譯指令、操作指令和代碼重點介紹JSP常用的六大基本對象:out對象、response對象、request對象、application對象、session對象和cookie對象。理解服務(wù)器端執(zhí)行所有HTML文件可以在資源管理器中雙擊執(zhí)行但是JSP文件必須先放到Web服務(wù)器中,然后通過HTTP的方式訪問。因為文件內(nèi)所有<%%>內(nèi)代碼是被Web服務(wù)器解釋執(zhí)行的。理解服務(wù)器端執(zhí)行JSP頁面結(jié)構(gòu)在一個JSP頁面中,主要分為三種元素:編譯指令、操作指令和JSP代碼。編譯指令告訴JSP的解釋引擎(比如:Tomcat),需要在編譯時做什么動作,比如引入一個其它的類,設(shè)置JSP頁面的使用什么語言編碼等。操作指令則是在JSP頁面被請求時,動態(tài)執(zhí)行的,比如可以根據(jù)某個條件動態(tài)跳轉(zhuǎn)到另外一個頁面。JSP代碼指的就是我們自己嵌入在JSP頁面中的Java代碼,這又分為兩種:第一種是JSP頁面中一些變量和方法的聲明,在聲明時,使用“<!%”和“%>”標(biāo)記。另外一種,就是常用到的用“<%”和“%>”包含的JSP代碼塊:編譯指令可以通過一定的指令,讓JSP容器采取必要的動作。例如:可以指定一個專門的錯誤處理頁面,當(dāng)JSP頁面出現(xiàn)錯誤時,可以由JSP容器自動地調(diào)用錯誤處理頁面。page指令language設(shè)置JSP頁面中用到的語言,默認值為“Java”,也是目前唯一有效的設(shè)定值。使用的語法是:“<%@pagelanguage="java"%>”。extends設(shè)定目前JSP頁面要繼承的父類。一般情況下不需要進行設(shè)置。在默認情況下,JSP頁面的默認父類是HttpJspBase。例如:當(dāng)前JSP頁面要繼承mypackage包下的myclass類,相應(yīng)的聲明語句為:“<%@pageextends="mypackage.myclass"%>”。import設(shè)置目前JSP頁面中要用到的Java類,這些Java類可能是SunJDK中的類,也有可能是程序員自己定義的類。例如:“<%@pageimport="java.sql.*,java.util.*"%>”。有些類在默認情況下已經(jīng)被加入到當(dāng)前JSP頁面,而不需要特殊聲明,包括四個類:java.lang.*;、java.servlet.*;、java.servlet.jsp.*;和java.servlet.http.*;。errorPage用來設(shè)定當(dāng)JSP頁面出現(xiàn)異常(Exception)時,所要轉(zhuǎn)向的頁面。如果沒有設(shè)定,則JSP容器會用默認的當(dāng)前網(wǎng)頁來顯示出錯信息。例如:“<%@pageerrorPage="/error/error_page.jsp"%>”isErrorPage用來設(shè)定當(dāng)前的JSP頁面是否作為傳回錯誤頁面的網(wǎng)頁,默認值是“false”。如果設(shè)定為“true”,則JSP容器會在當(dāng)前的頁面中生成一個exception對象。使用errorPage指令捕獲異常案例名稱:JSP中Exception的捕捉程序名稱:4-02.jsp<%@pagelanguage="java"errorPage="4-03.jsp"contentType="text/html;charset=GBK"%><% intdividend=0; intdivisor=0; intresult=0; try{ result=dividend/divisor; } catch(ArithmeticExceptionzz){ thrownewArithmeticException("除數(shù)不能為零!"); }%>JSP中Exception的捕捉案例名稱:JSP中Exception的捕捉程序名稱:4-03.jsp<%@pagelanguage="java"isErrorPage="true"contentType="text/html;charset=GBK"%>當(dāng)前頁面是:4-03.jsp<br><%out.print(exception.toString());%>include指令include指令用來指定怎樣把另一個文件包含到當(dāng)前的JSP頁面中,這個文件可以是普通的文本文件,也可以是一個JSP頁面。例如:“<%@includefile=”logo.htm“%>”。采用include指令,可以實現(xiàn)JSP頁面的模塊化,使JSP的開發(fā)和維護變得非常簡單。使用include指令

案例名稱:使用include指令程序名稱:4-04.jsp<%@includefile="4-01.jsp"%>taglib指令taglib指令允許頁面使用標(biāo)記擴展(定制標(biāo)記)。它命名了標(biāo)記庫。在JSP頁面里遇到定制的標(biāo)記時,引擎將找到在標(biāo)記庫中的該標(biāo)記,并且找到要實施的操作——實際上是執(zhí)行Java代碼。taglib指令的語法為:<%@tagliburi=”tagLibraryURI”prefix=”tagPrefix”%>其中:uri:一個URI標(biāo)識標(biāo)記庫描述器。一個標(biāo)記庫描述器用來唯一的命名一組定制的標(biāo)記,并且告訴包容器如何處理特殊的標(biāo)記tagPrefix:定義一個prefix:tagname形式的字符串前綴,用于定義定制的標(biāo)記。所保留的前綴為jsp、jspx、java、servlet、sun、sunw。jsp:include指令jsp:include標(biāo)準(zhǔn)動作用于在當(dāng)前的JSP頁面中加入靜態(tài)和動態(tài)的資源。語法格式為:<jsp:includepage=“test.htm”/>jsp:include指令必須以“/”結(jié)束,功能和include指令相同。jsp:forward指令jsp:forward操作指令用于把當(dāng)前的JSP頁面轉(zhuǎn)發(fā)到另一個頁面上?;菊Z法為:“<jsp:forwardpage=”test2.jsp“/>”,使用該功能時,瀏覽器的地址欄中地址不會發(fā)生任何變化。forward指令實現(xiàn)頁面間的跳轉(zhuǎn)案例名稱:使用forward指令實現(xiàn)頁面間的跳轉(zhuǎn)程序名稱:4-05.jsp<jsp:forwardpage="4-01.jsp"/>JSP代碼JSP代碼包括兩種,第一種是JSP頁面中一些變量和方法的聲明,在聲明時,使用“<!%”和“%>”標(biāo)記另外一種,就是常用到的用“<%”和“%>”包含的JSP代碼塊變量和方法在“<%!”和“%>”標(biāo)記符號之間聲明變量和方法,變量類型可以是Java語言允許的任何數(shù)據(jù)類型。在JSP頁面被編譯執(zhí)行的時候,整個頁面被編譯成一個類,這些變量是JSP頁面類的成員變量。變量的聲明和使用案例名稱:變量的聲明和使用程序名稱:4-06.jsp<%@pagecontentType="text/html;charset=GBK"%><%!inti=0;%><%i++;out.print(i);%>個人訪問本站代碼塊可以在“<%”和“%>”之間插入Java程序片,一個JSP頁面可以有許多程序片,這些代碼塊將被JSP服務(wù)器按照順序執(zhí)行。在一個代碼塊中聲明的變量是JSP頁面的局部變量,只在當(dāng)前頁面中有效。代碼塊案例名稱:代碼塊程序名稱:4-08.jsp<%@pagecontentType="text/html;charset=GBK"%><%inti=0;%><%i++;out.print(i);%>個人訪問本站使用out對象案例名稱:使用out對象程序名稱:4-09.jsp<%@pagecontentType="text/html;charset=GBK"%><% out.println("hello"); out.newLine(); out.write("hello");%><%="hello"%><%out.close();%>reponse對象response對象是一個javax.servlet.http.HttpServletResponse類的子類的對象網(wǎng)頁轉(zhuǎn)向?qū)τ趓esponse對象,最常用到的是sendRedirect()方法,可以使用這個方法將當(dāng)前客戶端的請求轉(zhuǎn)到其它頁面去。相應(yīng)的代碼格式為:“response.sendRedirect("URL地址");”和<jsp:forward>指令的最大區(qū)別就是:只能使用<jsp:forward>在本網(wǎng)站內(nèi)跳轉(zhuǎn),但我可以使用response.sendRedirect跳轉(zhuǎn)到任何一個地址的頁面案例名稱:網(wǎng)頁轉(zhuǎn)向程序名稱:4-10.jsp<%@pagecontentType="text/html;charset=GBK"%><% response.sendRedirect("4-01.jsp");%>動態(tài)contentType響應(yīng)當(dāng)請求一個JSP頁面的時候,如果該頁面用page指令設(shè)置頁面的contentType屬性的值是text/html,那么服務(wù)器將把靜態(tài)頁面部分發(fā)送給客戶端。也可以設(shè)置為其他一些相應(yīng)類型,如:text/plain(文本文件)、application/x-msexcel(Excel文件)和application/msword(Word文件)等。顯示為Word文檔案例名稱:顯示為Word文檔程序名稱:4-11.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML> <BODY> <P>response對象<BR>setContentType方法

<P>將當(dāng)前頁面保存為word文檔嗎

<% response.setContentType("application/msword;charset=GB2312"); %> </BODY></HTML>HTTP文件頭響應(yīng)可以利用JSP動態(tài)改變客戶端的響應(yīng),使用的語法是“response.setHeader()”,比如讓客戶端自動每隔5秒刷新一次,案例名稱:動態(tài)改變響應(yīng)頭程序名稱:4-12.jsp<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.util.*"%><P>現(xiàn)在的時間是:<BR><%out.println(""+newDate());response.setHeader("Refresh","5");%>設(shè)置緩沖區(qū)在實際的JSP應(yīng)用開發(fā)中,為了確保顯示的正確性,需要將禁用頁面緩沖,否則會顯示其他用戶的一些的信息。為了解決這個問題,需要在每個JSP的頁面中添加語句案例名稱:設(shè)置緩沖區(qū)程序名稱:4-13.jsp<%@pagecontentType="text/html;charset=GBK"%><% response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires",-1);%><%out.println("設(shè)置完畢!");%>request對象request對象是javax.servlet.HttpServletRequest子類的對象,當(dāng)客戶端請求一個JSP頁面時,JSP容器會將客戶端的請求信息包裝在這個request對象中請求信息的內(nèi)容包括請求的頭信息(Header)、系統(tǒng)信息(比如:編碼方式)、請求的方式(比如:GET或POST)、請求的參數(shù)名稱和參數(shù)值等信息得到Form表單的信息通常我們用得最多的就是客戶端請求的參數(shù)名稱和參數(shù)值信息。得到某參數(shù)值的語法為:“request.getParameter(”param1“)”。也可以通過request對象的getParameterNames()方法得到客戶端傳遞過來的所有參數(shù)名字,如:“Enumerationparams=request.getParameterNames();”。得到Form表單的信息案例名稱:HTML表單程序名稱:4-14.html<HTML><BODY> <FORMACTION="4-15.jsp"METHOD="POST"> <P>姓名:<INPUTTYPE="TEXT"SIZE="20"NAME="UserID"></P> <P>密碼:<INPUTTYPE="PASSWORD"SIZE="20"NAME="UserPWD"></P> <P><INPUTTYPE="SUBMIT"VALUE="提交"></P> </FORM></BODY></HTML>讀取表單數(shù)據(jù)案例名稱:讀取表單數(shù)據(jù)程序名稱:4-15.jsp<%@pagecontentType="text/html;charset=GBK"%><%request.setCharacterEncoding("GBK");StringstrUserName="";StringstrUserPWD="";strUserName=request.getParameter("UserID");strUserPWD=request.getParameter("UserPWD");%>姓名:<%=strUserName%><br>密碼:<%=strUserPWD%>第二種讀取值的方法是利用集合案例名稱:使用request對象獲取用戶提交數(shù)據(jù)的所有參數(shù)名字和值程序名稱:4-17.jsp<%@pagecontentType="text/html;charset=GBK"%><%@pageimport="java.util.*"%><%Stringcurrent_param="";request.setCharacterEncoding("GBK");Enumerationparams=request.getParameterNames();while(params.hasMoreElements()){ current_param=(String)params.nextElement();out.println("Name:"+current_param+"<br>"); out.println("Values:"+request.getParameter(current_param)+"<br>");}%>得到客戶的信息利用request對象可以獲得客戶提交的信息,比如:JSP文件目錄、客戶端的地址、以及服務(wù)器的端口等,案例名稱:獲得客戶的信息程序名稱:4-18.jsp漢字問題兩種解決方法當(dāng)利用request.getParameter得到Form種元素的時候,默認的情況字符編碼為ISO-8859-1,這種編碼不能正確的顯示漢字。目前有兩種解決方法,一種是在執(zhí)行操作之前,設(shè)置request的編碼格式,語法是:“request.setCharacterEncoding("GBK");”另一種方法是轉(zhuǎn)換字符編碼

<%Stringstr=request.getParameter("boy");byteb[]=str.getBytes("ISO-8859-1");str=newString(b);%>調(diào)查表信息的讀取案例名稱:調(diào)查表輸入頁面程序名稱:input.htm調(diào)查表信息的讀取案例名稱:調(diào)查表處理頁面程序名稱:handle.jspapplication對象站點所有的用戶公用一個application對象,當(dāng)站點服務(wù)器開啟的時候,application就被創(chuàng)建,直到網(wǎng)站關(guān)閉。利用application這一特性,可以方便地創(chuàng)建聊天室和網(wǎng)站計數(shù)器等常用站點應(yīng)用程序application的自定義屬性publicvoidsetAttribute(Stringkey,Objectobj),將對象obj添加到application對象中,并為添加的對象添加一個索引關(guān)鍵字key。publicObjectgetAttribute(Stringkey),獲取application對象中含有關(guān)鍵字key的對象。由于任何對象都可以添加到application中,因此用此方法取回對象的時候,需要強制轉(zhuǎn)化為原來的類型。自定義屬性案例名稱:自定義屬性程序名稱:4-19.jsp<%@pagecontentType="text/html;charset=GBK"%><% Stringstr="你好"; application.setAttribute("greeting",str);%><% StringstrBack=(String)application.getAttribute("greeting"); out.print(strBack);%>自定義屬性案例名稱:自定義屬性程序名稱:4-20.jsp<%@pagecontentType="text/html;charset=GBK"%><% StringstrBack=(String)application.getAttribute("greeting"); out.print(strBack);%>實現(xiàn)聊天室聊天室允許多用戶實時進行信息交流,所有用戶可以看到彼此的信息,這與application對象的特點正好符合,所以可以方便地利用application實現(xiàn)聊天室。

案例名稱:簡易聊天室程序名稱:4-21.jsp網(wǎng)頁計數(shù)器網(wǎng)頁計數(shù)器是application對象的又一個用途,因為application是所有的用戶所共有的,所以可以存儲計數(shù)器的值,當(dāng)有新用戶訪問網(wǎng)頁時自動增加計數(shù)器的值。案例名稱:網(wǎng)頁計數(shù)器版本一程序名稱:CountV1.jsp案例名稱:網(wǎng)頁計數(shù)器版本二程序名稱:CountV2.aspsession對象session對象是java.servlet.http.HttpSession類的子類的對象,它表示當(dāng)前的用戶會話信息。在session中保存在對象在當(dāng)前用戶連接的所有頁面中都是可以被訪問到的??梢允褂肧ession對象存儲用戶登錄網(wǎng)站時候的信息。當(dāng)用戶在頁面之間跳轉(zhuǎn)時,存儲在Session對象中的變量不會被清除對session的理解案例名稱:使用ID屬性程序名稱:4-22.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML><BODY><% Strings=session.getId();%>你的sessionID:<%=s%></BODY></HTML>自定義屬性對于session對象中,經(jīng)常用到的方法是setAttribute()、getAttribute()和removeAttribute()。分別可以對session中的對象進行存取和刪除操作。session對象的主要用途也是保存信息,當(dāng)用戶第一次到達網(wǎng)站時,系統(tǒng)為其分配一個session。session和application一樣也使用自己的自定義屬性使用session的自定義屬性案例名稱:使用session的自定義屬性程序名稱:4-23.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML><BODY> <% Stringstr="歡迎!"; session.setAttribute("Greeting",str); out.print((String)session.getAttribute("Greeting")); %> <br><ahref="4-24.jsp">下一頁</a></BODY></HTML>使用session的自定義屬性案例名稱:使用session的自定義屬性程序名稱:4-24.jsp<%@pagecontentType="text/html;charset=GBK"%><HTML><BODY> <% out.print((String)session.getAttribute("Greeting")); %> <br><ahref="4-24.jsp">下一頁</a></BODY></HTML>簡易session版購物車?yán)胹ession保存用戶選購的商品信息,本購物車程序包含三個程序:(1)buy1.jsp:購物網(wǎng)頁一。(2)buy2.jsp:購物網(wǎng)頁二。(3)display.jsp:查看購物車程序。簡易session版購物車案例名稱:購物網(wǎng)頁一程序名稱:buy1.jsp案例名稱:購物網(wǎng)頁二程序名稱:buy2.jsp案例名稱:顯示購物車程序程序名稱:display.jspcookie對象Cookie對象是由

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論