轉(zhuǎn)載至:http://fulong258.blog.163.com
JSP內(nèi)置對(duì)象詳解 JSP程序中8個(gè)默認(rèn)的內(nèi)置對(duì)象對(duì)于它們而言,不用聲明就可以直接使用.這8個(gè)對(duì)象分別是request,response,pageContext,session,application,out,config和page. page 實(shí)現(xiàn)處理本頁(yè)當(dāng)前請(qǐng)求的類的實(shí)例 java.1ang.Object page page 本 JSP 的 ServletConfig javax.servlet.ServletConfig config page 向輸出流寫(xiě)入內(nèi)容的對(duì)象 Javax.servlet.jsp.JspWriter out application 從 servlet 配置對(duì)象獲得的 servlet 上下文(如在 getServletConfig() ,getContext()的調(diào)用中) Javax.servlet.ServletContext application session 為請(qǐng)求的客戶創(chuàng)建的session對(duì)象 Javax.servlet.http.HttpSession session page 本 JSP 的頁(yè)面上下文 Javax.servlet.jsp.PageContext pageContext page 對(duì)請(qǐng)求的應(yīng)答 依賴協(xié)議的java.servlet.ServletResponse 子類(例如,javax.servlet.HttpServletResponse) response request 觸發(fā)服務(wù)調(diào)用的請(qǐng)求 依 ??協(xié)議的java.servlet.ServletRequest 子類(例如,javax.servlet.HttpServletRequest) Request 范圍 代表內(nèi)容 類型 內(nèi)置對(duì)象 3.2 request對(duì)象 request 對(duì)象是ServletRequest的一個(gè)實(shí)例.當(dāng)客戶端請(qǐng)求一個(gè)JSP網(wǎng)頁(yè)時(shí),JSP引擎會(huì)將客戶端的請(qǐng)求信息包裝在這個(gè)request對(duì)象中,請(qǐng)求信 息的內(nèi)容包括請(qǐng)求的標(biāo)題頭(Header),信息(如瀏覽器的版本信息,語(yǔ)言和編碼方式等),請(qǐng)求的方式(如HTTP方法:GET,POST,PUT 等),請(qǐng)求的參數(shù)名稱,參數(shù)值和客戶端的主機(jī)名稱等,然后將request對(duì)象當(dāng)作jspService方法的HttpServletRequest參數(shù) 值,所以我們可以通過(guò)這個(gè)對(duì)象來(lái)取得有關(guān)客戶端的請(qǐng)求信息. 3.2.1 request對(duì)象的方法 方法 返回接收請(qǐng)求的端口 getServerPort 返回接收請(qǐng)求的服務(wù)器的主機(jī)名 getServerName 返回發(fā)出請(qǐng)求的 URL 的機(jī)制 getScheme 返回發(fā)送請(qǐng)求的接口程序的完全限定的主機(jī)名 getRemoteHost 返回發(fā)送請(qǐng)求的接口程序的 IP 地址 getRemoteAddr 返回運(yùn)用替換規(guī)則從虛擬地址中獲得的實(shí)際地址 getRealPath 返回從請(qǐng)求體中讀取的文本的緩存數(shù)據(jù) getReader 返回請(qǐng)求的協(xié)議和版本號(hào) getProtocol 返回作為字符串列舉的指定參數(shù)的值 getParameterValues 返回本次請(qǐng)求的參數(shù)名字 getParameterName 返回包含指定參數(shù)的單獨(dú)值的字符串 getParameter 返回在請(qǐng)求體中讀取二進(jìn)制數(shù)據(jù)的輸入流 getlnputStream 返回請(qǐng)求實(shí)體數(shù)據(jù)的 InternetMedia 類型 getContenType 返回請(qǐng)求實(shí)體數(shù)據(jù)的大小 getContentLength 返回為請(qǐng)求的輸入進(jìn)行編碼的字符集合 getCharacterEncoding 返回請(qǐng)求的給出名字的屬性的值 getAttribute 3.3 response對(duì)象 response 對(duì)象的類型是javax.servlet.ServletResponse類的實(shí)例,JSP引擎會(huì)根據(jù)客戶端的請(qǐng)求信息建立一個(gè)默認(rèn)的response對(duì) 象.它用于將瀏覽器參考信息,如回應(yīng)的Header,回應(yīng)本體(HTML的內(nèi)容)以及服務(wù)器端的狀態(tài)碼等信息提供給客戶端. 3.3.1 response對(duì)象的方法 重定向客戶端的地址 sendRedirect 設(shè)定指定名字的HTTP文件頭的值 setHeader 向客戶端發(fā)送錯(cuò)誤信息 sendError 判斷指定的HTTP文件頭是否存在 containsHeader 添加HTTP文件頭(Header),將會(huì)傳送到客戶端 addHeader 添加一個(gè)Cookie對(duì)象,用來(lái)保存客戶端的用戶信息 addCookie 為應(yīng)答設(shè)置內(nèi)容類型 setContentType 為應(yīng)答設(shè)置內(nèi)容長(zhǎng)度 setContentLength 返回用于格式化文本應(yīng)答的打印程序 getWriter 返回用于書(shū)寫(xiě)二進(jìn)制應(yīng)答數(shù)據(jù)的輸出流 getCharacterEncoding 返回用于MIME編碼的字符集合 getCharacterEncoding 3.4 session對(duì)象 session對(duì)象是JSP中一個(gè)很重要的內(nèi)部對(duì)象,我們使用它來(lái)保存某個(gè)特定客戶端(訪問(wèn)者)一次訪問(wèn)的一些特定信息. 在JSP網(wǎng)絡(luò)編程中,有多種方法可以保存客戶信息,但是最常用,最實(shí)用的還是session對(duì)象. 3.4.1 session對(duì)象介紹 session對(duì)象,實(shí)際上就是服務(wù)器與客戶端之間的"會(huì)話" (1) session可以用來(lái)儲(chǔ)存訪問(wèn)者的一些特定信息.主機(jī)服務(wù)器就是根據(jù)session來(lái)跟蹤這些信息的. (2) session可以創(chuàng)建訪問(wèn)者信息容器. (3) session可以用來(lái)跟蹤訪問(wèn)者的訪問(wèn)路徑,從中挖掘有用的信息,如訪問(wèn)者的興趣愛(ài)好,訪問(wèn)目的. 用戶在Web應(yīng)用程序中訪問(wèn)同一頁(yè)面時(shí),session變量始終存在,當(dāng)用戶在應(yīng)用程序的頁(yè)之間跳轉(zhuǎn)時(shí),存儲(chǔ)在session對(duì)象中的變量也不會(huì)清除,當(dāng)然也可以使用session方法顯式地結(jié)束一個(gè)會(huì)話和設(shè)置空閑會(huì)話的超時(shí)期限. session在JSP程序中是一個(gè)內(nèi)置的對(duì)象 每一個(gè)客戶端都有一個(gè)session對(duì)象用來(lái)存放于這個(gè)客戶端相關(guān)的數(shù)據(jù). 在JSP的程序中,通常不用任何代碼,就可以直接使用session對(duì)象.不過(guò)為了確認(rèn),可以加入以下代碼,以表示需要啟動(dòng)session功能. 如果設(shè)置上述的session值為false,則說(shuō)明禁用session功能. session對(duì)象的類為HttpSession,它提供了很多使用的方法. 3.4.2 session對(duì)象的方法 session對(duì)象的類是HttpSession.HttpSession由服務(wù)器的程序?qū)崿F(xiàn),提供HTTP服務(wù)器和HTTP客戶端之間的會(huì)話.會(huì)話,就是在給定時(shí)間段內(nèi)持續(xù)進(jìn)行多路連接和請(qǐng)求.會(huì)話被用來(lái)在多頁(yè)面請(qǐng)求中保持狀態(tài)和用戶認(rèn)證. session對(duì)象的常用方法 移去和會(huì)話應(yīng)用層數(shù)據(jù)中指定名字相連的對(duì)象 removeValue 將指定的對(duì)象和使用指定名字的會(huì)話應(yīng)用層數(shù)據(jù)相連 putValue 檢查是否客戶端參加了會(huì)話 isNew 使會(huì)話無(wú)效,并將其從上下文中移出 invalidate 返回和會(huì)話相連的應(yīng)用層數(shù)據(jù)對(duì)象的名字 getValueNames 返回和應(yīng)用層數(shù)據(jù)中指定名字相聯(lián)系的對(duì)象 getValue 返回會(huì)話相連的上下文 getSessionContext 返回客戶端上一次發(fā)送攜帶會(huì)話賬號(hào)的時(shí)間 getLastAccessTime 返回會(huì)話標(biāo)識(shí)符 getId 返回會(huì)話創(chuàng)建的時(shí)間 getCreationTime 3.5 application對(duì)象 application 對(duì)象保存了一個(gè)應(yīng)用系統(tǒng)中一些公用的數(shù)據(jù).與session對(duì)象相比,application對(duì)象是所有客戶共享的,而session對(duì)象則是每個(gè)客戶專 用的.application對(duì)象可以是javax.servlet.ServletContext類型的.ServletContext接口讓 servlet訪問(wèn)關(guān)于其環(huán)境的信息.application對(duì)象的范圍是application. 3.5.1 application對(duì)象的方法 方法 設(shè)置某個(gè)application對(duì)象的某個(gè)屬性值 setAttribute 獲得當(dāng)前版本的Servlet編譯器的信息 getServerInfo 返回application某個(gè)屬性的值 getInitParameter 以Enumeration數(shù)據(jù)形式返回所有application對(duì)象的屬性名稱 getAttributeNames 以O(shè)bject對(duì)象的形式返回對(duì)應(yīng)名稱的application對(duì)象的屬性值 getAttribute 3.6 out對(duì)象 out對(duì)象用于輸出數(shù)據(jù),它可以是javax.servlet.jsp.JspWriter的一個(gè)實(shí)例.out對(duì)象的范圍是page. 從 java.io.Writer拓展而來(lái)的公共抽象類JspWriter效仿了java.io.BufferedWriter和 java.Io.PrintWriter中的某些功能.但是,不同之處在于它會(huì)在打印方法中拋出(throw) java.Io.IOException異常,而PrintWriter不這樣做. JSP中的out對(duì)象就是這種類型的.如果page指令選擇了 autoflush="true",那么當(dāng)出現(xiàn)由于當(dāng)前的操作不清空緩存而造成緩沖區(qū)溢出的情況時(shí),這個(gè)類的所有I/O操作會(huì)自動(dòng)清空緩沖區(qū)的內(nèi)容.如果 autoflush="false",那么當(dāng)操作造成了緩沖區(qū)溢出時(shí),這個(gè)類的所有的I/O操作將拋出一個(gè)IOException. 3.6.1 out對(duì)象的變量 autoFlush 類型為protected boolean autoflush 如果變量值為真,則當(dāng)當(dāng)前的操作造成緩沖區(qū)溢出時(shí),緩沖區(qū)會(huì)被清空. 如果變量值為假,則如果當(dāng)前操作造成緩沖區(qū)溢出就會(huì)拋出一個(gè)IOException. bufferSize 類型為protectedintbufferSize 表示緩沖區(qū)目前的大小.初始值根據(jù)不同的設(shè)備而不同,但是不少于8KB. DEFAULT_BUFFER 類型為publicstaticfinalintDEFAULT_BUFFER 表示W(wǎng)riter正使用的缺省的緩沖區(qū)大小設(shè)置. No_BUFFER 類型為Public static final int NO_BUFFER 表示W(wǎng)riter是否處于緩存輸出狀態(tài). 3.6.2 Out對(duì)象的方法 方法 打印一個(gè)對(duì)象 Object 打印一個(gè)長(zhǎng)整數(shù) long 打印一個(gè)整數(shù) int 打印一個(gè)浮點(diǎn)數(shù) float 打印一個(gè)雙精度浮點(diǎn)數(shù) double 打印一個(gè)字符數(shù)組 char[] 打印一個(gè)字符 char 打印一個(gè)布爾值 boolean 寫(xiě)一行分隔符 _ newLine 獲得autoFlush的當(dāng)前值 _ isAutoFlush 獲得緩沖區(qū)中未使用的字節(jié)數(shù) _ getRemaining 獲得緩沖區(qū)的大小 _ getBufferSize 清除緩沖區(qū)的流 _ clearBuffer Clear 清除緩沖區(qū)內(nèi)容 _ Clear 輸出流 _ flush 關(guān)閉流,并輸出 _ Close 描述 參數(shù) 方法 打印一個(gè)字符串,然后結(jié)束行 String println 打印一個(gè)對(duì)象,然后結(jié)束行 Object println 打印一個(gè)長(zhǎng)整數(shù),然后結(jié)束行 long println 打印一個(gè)整數(shù),然后結(jié)束行 int println 打印一個(gè)浮點(diǎn)數(shù),然后結(jié)束行 float println 打印一個(gè)雙精度浮點(diǎn)數(shù),然后結(jié)束行 double println 打印一個(gè)字符數(shù)組,然后結(jié)束行 char[] println 打印一個(gè)字符,然后結(jié)束行 char prinfln 打印一個(gè)布爾值,然后結(jié)束行 boolean println 通過(guò)寫(xiě)一個(gè)行分隔符來(lái)結(jié)束當(dāng)前行 _ println 打印一個(gè)字符串 String 3.6.3 Out對(duì)象的使用示例 用out對(duì)象輸出多種不同類型的數(shù)據(jù),包括輸出中文 文件out.jsp 3.7 其他對(duì)象 pageContext對(duì)象 pageContext 對(duì)象是javax.servlet.jsp.PageContext類的一個(gè)實(shí)例.pageContext對(duì)象提供了存取所有關(guān)于JSP程序執(zhí)行時(shí)所需要 用到的屬性和方法,如session,application,config,out等對(duì)象屬性.對(duì)于pageContext對(duì)象,它的范圍是page. page對(duì)象 page對(duì)象是java.lang.Object類型的,它是處理當(dāng)前請(qǐng)求的JSP頁(yè)的實(shí)現(xiàn)類的實(shí)例.page對(duì)象在頁(yè)的正文中可以被看作"this"的同義詞.page對(duì)象的范圍是page. config對(duì)象 config對(duì)象是javax.servlet.ServletConfig類型的.它提供存取servlet class初始參數(shù)及有關(guān)Server環(huán)境信息的ServletContext對(duì)象.config對(duì)象的范圍是page. |
|