第04章-JSP內置對象_第1頁
第04章-JSP內置對象_第2頁
第04章-JSP內置對象_第3頁
第04章-JSP內置對象_第4頁
第04章-JSP內置對象_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

4

章JSP內置對象本章內容JSP內置對象概述request對象response對象session對象application對象out對象其他內置對象24.1JSP內置對象概述為了Web應用程序開發的方便,在JSP頁面中內置了一些默認的對象,這些對象不需要預先聲明就可以在腳本代碼和表達式中隨意使用。JSP提供的內置對象共有9個,如下表所示。34.1JSP內置對象概述對象名稱所屬類型有效范圍applicationjavax.servlet.ServletContextapplicationconfigjavax.servlet.ServletConfigpageexceptionjava.lang.Throwablepageoutjava.servlet.jsp.JspWriterpagepagejavax.servlet.jsp.HttpJspPagepagepageContextjavax.servlet.jsp.PageContextpagerequestjava.servlet.http.HttpServletRequestrequestresponsejava.servlet.http.HttpServletResponsepagesessionjava.servlet.http.HttpSessionsession44.1JSP內置對象概述54.2request對象request對象是從客戶端向效勞器發出請求,包括用戶提交的信息以及客戶端的一些信息。客戶端可通過HTML表單或在網頁地址后面提供參數的方法提交數據,然后通過request對象的相關方法來獲取這些數據。request的各種方法主要用來處理客戶端瀏覽器提交的請求中的各項參數和選項。64.2.1訪問請求參數在Web應用程序中,經常要完成用戶與網站的交互。例如:當用戶填寫表單后,需要把數據提交給效勞器處理,效勞器獲取到這些信息并進行處理。request對象的getParameter()方法,可以用來獲取用戶提交的數據。request對象訪問請求參數的方法:

StringgetParameter(“參數名〞)

String[]getParameterValues(“參數名〞)

如果參數值不存在,那么返回一個null值.例4-1:CH04\EX4_174.2.2在作用域中管理屬性進行請求轉發時,如果需要把一些數據〔對象〕帶到轉發后的頁面進行處理。可以使用request對象的setAttribute()方法設置數據在request范圍內存取。

request.setAttribute("key",Object);參數key是鍵,為String類型。在轉發后的頁面取數據時,就通過這個鍵來獲取數據。參數object是鍵值,為Object類型,它代表需要保存在request范圍內的數據。獲取轉發數據的方法如下:

Objectobj=request.getAttribute(“key〞);例4-2:CH04\EX4_28Cookie的應用9104.2.3獲取CookieCookie為Web應用程序保存用戶相關信息提供了一種有用的方法。Cookie是一小段文本信息,伴隨著用戶請求和頁面在Web效勞器和瀏覽器之間傳遞。用戶每次訪問站點時,Web應用程序都可以讀取Cookie包含的信息。在JSP中,可以通過request對象中的getCookies()方法獲取Cookie中的數據。

獲取Cookie的方法如下:

Cookie[]cookie=request.getCookies();114.2.3獲取CookieCookie根本用法:CH04\EX4-3\basic.jsp使用Cookie記錄客戶端信息

CH04\EX4-3\login.jsp124.2.4獲取客戶信息request對象提供了一些用來獲取客戶信息的方法:

例4-4:CH04\EX4_4方法說明getHeader(Stringname)獲得Http協議定義的文件頭信息getHeaders(Stringname)返回指定名字的requestHeader的所有值,其結果是一個枚舉的實例getHeadersNames()返回所有requestHeader的名字,其結果是一個枚舉的實例getMethod()獲得客戶端向服務器端傳送數據的方法,如get,post,header,tracegetProtocol()獲得客戶端向服務器端傳送數據所依據的協議名稱getRequestURI()獲得發出請求字符串的客戶端地址getRealPath()返回當前請求文件的絕對路徑getRemoteAddr()獲取客戶端的IP地址getRemoteHost()獲取客戶端的機器名稱getServerName()獲取服務器的名字getServerPath()獲取客戶端所請求的腳本文件的文件路徑getServerPort()獲取服務器的端口號134.2.5訪問平安信息request對象提供了對平安屬性的訪問。例如,可以通過使用request對象來確定當前請求是否使用了一個類似HTTP的平安協議:

用戶平安信息:<%=request.isSecure()%>方法說明isSecure()返回布爾類型的值,它用于確定這個請求是否使用了一個安全協議,例如HTTPisRequestedSessionIdFromCookie()返回布爾類型的值,表示會話是否使用了一個Cookie來管理會話IDisRequestedSessionIdFromURL()返回布爾類型的值,表示會話是否使用URL重寫來管理會話IDisRequestedSessionIdFromValid()檢查請求的會話ID是否合法144.2.6訪問國際化信息瀏覽器可以通過accept-language的HTTP報頭向Web效勞器指明它所使用的本地語言。request對象中的getLocale()和getLocales()方法允許JSP開發人員獲取這一信息,獲取的信息屬于類型。類型的對象封裝了一個國家和一種國家所使用的語言。使用這些信息,JSP開發者就可以使用語言所特有的信息作出響應。例4-5:CH04\EX4_5154.3response對象response對象和request對象相對應,用于響應客戶請求,向客戶端輸出信息。response是接口類的對象,它封裝了JSP產生的響應,并發送到客戶端以響應客戶端的請求。請求的數據可以是各種數據類型,甚至是文件。164.3.1重定向網頁方法說明sendError(intnumber)使用指定的狀態碼向客戶發送錯誤響應sendError(intnumber,Stringmsg)使用指定的狀態碼和描述性消息向客戶發送錯誤響應sendRedirect(Stringlocation)使用指定的重定向位置URL向客戶發送重定向響應,可以使用相對URLresponse對象中用于重定向網頁的方法上述兩個方法都會中止當前的請求和響應。如果HTTP響應已經提交給客戶,那么不會調用這些方法。例4-6:CH04\EX4_6174.3.2設置HTTP響應報頭response對象提供了設置HTTP響應報頭的方法:setDateHeader(Stringname,longdate)

使用給定的名稱和日期值設置一個響應報頭,如果指定的名稱已經設置,那么新值會覆蓋舊值setHeader(Stringname,Stringvalue)

使用給定的名稱和值設置一個響應報頭,如果指定的名稱已經設置,那么新值會覆蓋舊值setHeader(Stringname,intvalue)

使用給定的名稱和整數值設置一個響應報頭,如果指定的名稱已經設置,那么新值會覆蓋舊值addHeader(Stringname,longdate)

使用給定的名稱和值添加一個響應報頭184.3.2設置HTTP響應報頭response對象提供了設置HTTP響應報頭的方法:addDateHeader(Stringname,longdate)

使用給定的名稱和日期值添加一個響應報頭containHeader(Stringname)

返回一個布爾值,它表示是否設置了已命名的響應報頭addIntHeader(Stringname,intvalue)

使用給定的名稱和整數值添加一個響應報頭setContentType(Stringtype) 為響應設置內容類型,其參數值可以為text/html,text/plain,application/x_msexcel或application/mswordsetContentLength(intlen) 為響應設置內容長度loc) 為響應設置地區信息194.3.2設置HTTP響應報頭例4-7:將頁面另存為WORD文檔CH04\EX4_7\version_0.jsp204.3.3緩沖區配置緩沖可以更加有效地在效勞器與客戶之間傳輸內容。HttpServletResponse對象為支持jspWriter對象而啟用了緩沖區配置。response對象提供了配置緩沖區的方法,如下表所示。例4-8:CH04\EX4_8方法說明flushBuffer()強制把緩沖區中內容發送給客戶getBufferSize()返回響應所使用的實際緩沖區大小,如果沒使用緩沖區,則該方法返回0setBufferSize(intsize)為響應的主體設置首選的緩沖區大小isCommitted()返回一個boolean,表示響應是否已經提交;提交的響應已經寫入狀態碼和報頭reset()清除緩沖區存在的任何數據,同時清除狀態碼和報頭214.4session對象HTTP協議是一種無狀態協議。當一個客戶向效勞器發出請求,效勞器接收請求,并返回響應后,該連接就被關閉了,此時效勞器端不保存連接的有關信息,因此當下一次連接時,效勞器已沒有了以前的連接信息,此時將不能判斷這一次連接和以前的連接是否屬于同一客戶。224.4session對象引發問題:Web效勞器不知道哪些請求是同一個瀏覽器發出的,也就是說不知道同一個瀏覽器以前的訪問信息。但保存以前的訪問信息又是必須的。因此:Web效勞器端程序開發方法中需要提供一些專門技術來維持會話狀態信息。23方法:瀏覽器對每個請求都發送一個標識(sesssionid)給Web效勞器,屬于同一個會話的請求都帶有相同的標識號,屬于不同會話的請求消息總是帶有不同的標識號。具體實現技術:(1)在Cookie中傳遞(2)在URL的附加參數中傳遞(類似get方法)4.4session對象244.4session對象為了彌補這一缺點,JSP提供了一個session對象,這樣效勞器和客戶端之間的連接就會一直保持下去,但是在一定時間內〔系統默認在30分鐘〕,如果客戶端不向效勞器發出應答請求,session對象就會自動消失。25Session的應用26Session失效的情況(生命期結束)(1)超時(2)程序主動銷毀,invalidate方法被調用(3)效勞器崩潰注意:瀏覽器關閉,效勞器不會銷毀session4.4session對象27HttpSession接口中的主要方法(1)getID方法用于返回與當前HttpSession對象關聯的會話標識號。(2)isNew方法用于返回當前HttpSession對象是否是新創立的。在以下情況下,isNew方法返回truea.請求消息中沒有通過任何方式返回SessionID,這種情況發生在某個客戶端瀏覽器首次訪問某個能開啟會話的Servlet程序時;b.請求消息中通過某種方式返回了SessionID,但返回的SessionID與當前HttpSession對象中保存的會話標識號不匹配,這種情況發生在客戶端瀏覽器超時后再次訪問某個能開啟會話的Servlet程序時。4.4session對象28(3)Invalidate方法用于釋放當前HttpSession的資源,不必等到超時后再釋放。(4)getServletContext方法用于返回當前HttpSession對象所屬的Web應用程序對象。(5)setAttribute方法用于將一個對象與一個名稱關聯后存儲進當前的HttpSession對象中。(6)getAttribute方法用于從當前HttpSession對象中返回指定名稱的屬性對象。(7)removeAtrribute方法用于從當前HttpSession對象中刪除指定名稱的屬性。4.4session對象29(8)getLastAccessedTime方法返回客戶端最后一次請求的發送時間,從1970年1月1日0時0分0秒到當前所經歷的毫秒(9)getMaxInactiveInterval方法 用于讀取當前的session的超時時間,單位為秒(10)setMaxInactiveInterval方法用于設置session的超時時間,單位為秒。如果客戶端從最后一次請求開始,在連續的這段時間內一直沒有再向效勞器發送請求,那么效勞器認為出現了session超時,會去除掉該session對象。Tomcat默認的超時時間為30分鐘。4.4session對象30HttpServletRequest接口中的Session方法(1)getSession方法用于返回與當前請求相關的HttpSession對象。publicHttpSessiongetSession(booleancreate)publicHttpSessiongetSession()(2)isRequestedSessionFromCookie方法用于判斷SessionID是否是通過請求消息中的Cookie傳遞過來的。(3)isRequestedSessionFromURL方法用于判斷SessionID是否是通過請求消息的URL參數傳遞過來的。4.4session對象314.4session對象JSP頁面可以將任何對象作為屬性來保存。創立及獲取客戶的會話,session對象用于存取對象的方法:voidsetAttribute(Stringname,Objectvalue);

用于是設置指定名稱的屬性值,并將其存儲在session對象中.ObjectgetAttribute(Stringname);

用于獲取與指定名字name相聯系的屬性.例:EX4_9\test.jsp324.4session對象從會話中移除對象的方法:session.removeAttribute(Stringname)銷毀session的方法:session.invalidate()會話超時的管理:longsession.getLastAccessedTime()intsession.getMaxInactiveInterval()voidsession.setMaxInactiveInterval(int

interval)例4-9:CH04\EX4_9334.5application對象application對象用于保存應用程序中所有的公有數據,效勞器啟動并且自動創立application對象后,只要沒有關閉效勞器,application對象將一直存在,所有用戶可以共享application對象。application對象與session對象有所區別,session對象和用戶會話相關,不同用戶的session是完全不同的對象,而用戶的application對象都是相同的一個對象,即共享這個內置的application對象。34ServletContext對象–application相同:都可用于實現在多個.jsp(或servlet程序)中傳遞和共享數據區別:同一個Web應用程序中的所有.jsp得到的都是一個ServeletContext對象—application,所以存儲在ServletContext對象中的屬性可以被所有的.jsp訪問和共享,而不管訪問來自哪個客戶端的瀏覽器。存儲在HttpSession對象中的屬性僅僅被來自同一客戶端瀏覽器的一組訪問共享。4.5application對象354.5application對象364.5application對象374.5.1訪問應用程序初始化參數通過application對象調用的ServletContext對象提供了對應用程序環境屬性的訪問。web應用程序的配置文件(web.xml)位于應用程序環境目錄下的WEB-INF子目錄中。訪問web.xml文件中的參數的方法StringgetInitParameter(Stringname)EnumerationgetInitParameterNames()例如:CH04\EX4_10384.5.2管理應用程序環境屬性與session對象相同,也可以在application對象中設置屬性。在session中設置的屬性只在當前客戶會話范圍內容有效,客戶超過保存時間不發送請求時,session對象將被回收。在application對象中設置的屬性在整個應用程序范圍內是有效的,即使所有的用戶都不發送請求,只要不關閉應用效勞器,在其中設置的屬性仍然是有效的。394.5.2管理應用程序環境屬性application對象管理應用程序環境屬性的方法:removeAttribute(Stringname) 從ServletContext的對象中去掉指定名稱的屬性setAttribute(Stringname,Objectobject) 使用指定名稱和指定對象在ServletContext的對象中進行關聯getAttribute(Stringname) 從ServletContext的對象中獲取一個指定對象getAttributeNames() 返回存儲在ServletContext對象中屬性名稱的枚舉數據例如:CH04\EX4_10404.6其他對象out對象主要用來向客戶端輸出各種數據類型的內容,并且管理應用效勞器上的輸出緩沖區。方法說明clear()清空緩沖區clearBuffer()清空當前區的內容close()先刷新流,然后關閉流flush()刷新流getBufferSize()以字節為單位返回緩沖區的大小getRemaining()返回緩沖區中沒有使用的字符的數量isAutoFlush()返回布爾值,自動刷新還是在緩沖區溢出時拋出IOException異常414.6其他對象pageContext對象它相當于頁面中所有其他對象功能的最大集成者,使用它可以訪問到本頁中所有其他對象。config對象被封裝成接口,它表示Servlet的配置,當一個Servlet初始化時,容器把某些信息通過此對象傳遞給這個Servlet。開發者可以在web.xml文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。42方法說明forward(java.lang.StringrelativeUtlpath)把頁面轉發到另一個頁面或者servlet組件上getAttribute(java.lang.Stringname[,intscope])scope參數是可選的,該方法用來檢索一個特定的已經命名的對象的范圍,并且還可以通過調用getAttributeNameInScope()方法,檢索對某個特定范圍的每個屬性String字符串名稱枚舉getException()返回當前的Exception對象getRequest()返回當前的request對象getResponse()返回當前的response對象getServletConfig()返回當前頁面的ServletConfig對象invalidate(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論